Skip to main content
`Ctrl`+`K`

# BVCreateTensor

Creates a tensor `BV` that is represented in compact form as \(V = (I \otimes U) S\), where \(U\) has orthonormal columns.

## Synopsis

    #include "slepcbv.h"
    PetscErrorCode BVCreateTensor(BV U,PetscInt d,BV *V)

Collective

## Input Parameters

- U - a basis vectors object

- d - the number of blocks (degree) of the tensor `BV`

## Output Parameter

- V - the new basis vectors context

## Notes

The new basis vectors object is \(V = (I \otimes U) S\), where \(\otimes\) denotes the Kronecker product, \(I\) is the identity matrix of order \(d\), and \(S\) is a sequential matrix allocated internally. This compact representation is used, e.g., to represent the Krylov basis generated with the linearization of a matrix polynomial of degree \(d\).

The size of `V` (number of rows) is equal to `d` times `n`, where `n` is the size of `U`. Matrix \(S\) has \(d \times m\) rows and \(m-d+1\) columns, where `m` is the number of columns of `U`, so `m` should be at least `d`.

The communicator of `V` will be the same as `U`.

On input, the content of `U` is irrelevant. Alternatively, it may contain some nonzero columns that will be used by `BVTensorBuildFirstColumn()`.

## See Also

BV: Basis Vectors, `BVTensorGetDegree()`, `BVTensorGetFactors()`, `BVTensorBuildFirstColumn()`

## Level

advanced

## Location

src/sys/classes/bv/impls/tensor/bvtensor.c

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