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, 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