Skip to main content
`Ctrl`+`K`

# BVDot

Computes the ‘block-dot’ product of two basis vectors objects.

## Synopsis

    #include "slepcbv.h"
    PetscErrorCode BVDot(BV X,BV Y,Mat M)

Collective

## Input Parameters

- X - first basis vectors

- Y - second basis vectors

## Output Parameter

- M - the resulting matrix

## Notes

This is the generalization of `VecDot()` for a collection of vectors, \(M = Y^*X\). The result is a matrix \(M\) whose entry \(m_{ij}\) is equal to \(y_i^* x_j\) (where \(y_i^*\) denotes the conjugate transpose of \(y_i\)).

If a non-standard inner product has been specified with `BVSetMatrix()`, then the result is \(M = Y^*BX\). In this case, both `X` and `Y` must have the same associated matrix.

On entry, `M` must be a sequential dense `Mat` with dimensions `m,n` at least, where `m` is the number of active columns of `Y` and `n` is the number of active columns of `X`. Only rows (resp. columns) of `M` starting from `ly` (resp. `lx`) are computed, where `ly` (resp. `lx`) is the number of leading columns of `Y` (resp. `X`).

`X` and `Y` need not be different objects.

## See Also

BV: Basis Vectors, `BVDotVec()`, `BVDotColumn()`, `BVSetActiveColumns()`, `BVSetMatrix()`

## Level

intermediate

## Location

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

## Implementations

BVDot_Contiguous() in src/sys/classes/bv/impls/contiguous/contig.c
BVDot_Mat() in src/sys/classes/bv/impls/mat/bvmat.c
BVDot_Svec() in src/sys/classes/bv/impls/svec/svec.c
BVDot_Tensor() in src/sys/classes/bv/impls/tensor/bvtensor.c
BVDot_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