BVMult#

Computes Y = betaY + alphaX*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 = betaY + alphaX is done (i.e. results as if Q = identity). 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#

BVMultVec(), BVMultColumn(), BVMultInPlace(), BVSetActiveColumns()

Level#

intermediate

Location#

src/sys/classes/bv/interface/bvops.c

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