BVMult#
Computes \(Y = \beta Y + \alpha X Q\).
Synopsis#
#include "slepcbv.h"
PetscErrorCode BVMult(BV Y,PetscScalar alpha,PetscScalar beta,BV X,Mat Q)
Logically Collective
Input Parameters#
Y - first basis vectors context (modified on output)
alpha - first scalar
beta - second scalar
X - second basis vectors context
Q - (optional) sequential dense matrix
Notes#
X and Y must be different objects. The case X=Y can be addressed with
BVMultInPlace().
If matrix Q is NULL, then an AXPY operation \(Y = \beta Y + \alpha X\) is
done (i.e., results as if \(Q = I\)). If provided,
the matrix Q must be a sequential dense Mat, with all entries equal on
all processes (otherwise each process will compute a different update).
The dimensions of Q must be at least m,n where m is the number of active
columns of X and n is the number of active columns of Y.
The leading columns of Y are not modified. Also, if X has leading
columns specified, then these columns do not participate in the computation.
Hence, only rows (resp. columns) of Q starting from lx (resp. ly) are used,
where lx (resp. ly) is the number of leading columns of X (resp. Y).
See Also#
BV: Basis Vectors, BVMultVec(), BVMultColumn(), BVMultInPlace(), BVSetActiveColumns()
Level#
intermediate
Location#
Implementations#
BVMult_Contiguous() in src/sys/classes/bv/impls/contiguous/contig.c
BVMult_Mat() in src/sys/classes/bv/impls/mat/bvmat.c
BVMult_Svec() in src/sys/classes/bv/impls/svec/svec.c
BVMult_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