BVMult#
Computes Y = betaY + alphaX*Q.
Synopsis#
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#
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