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#
Level#
advanced
Location#
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