Skip to main content
`Ctrl`+`K`

# BVTensorCompress

Updates the \(U\) and \(S\) factors of the tensor basis vectors object `V` by means of an SVD, removing redundant information.

## Synopsis

    #include "slepcbv.h"
    PetscErrorCode BVTensorCompress(BV V,PetscInt newc)

Collective

## Input Parameters

- V - the tensor basis vectors context

- newc - additional columns to be locked

## Notes

This function is typically used when restarting Krylov solvers. Truncating a tensor `BV` \(V = (I \otimes U) S\) to its leading columns amounts to keeping the leading columns of \(S\). However, to effectively reduce the size of the decomposition, it is necessary to compress it in a way that fewer columns of \(U\) are employed. This can be achieved by means of an update that involves the SVD of the low-rank matrix \([S_0, S_1, \dots, S_{d-1}]\), where \(S_i\) are the pieces of \(S\).

If `newc` is nonzero, then `newc` columns are added to the leading columns of `V`. This means that the corresponding columns of the \(U\) and \(S\) factors will remain invariant in subsequent operations.

## See Also

BV: Basis Vectors, `BVTENSOR`, `BVCreateTensor()`, `BVSetActiveColumns()`

## Level

advanced

## Location

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

## Implementations

BVTensorCompress_Tensor() in 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