Proxy of C++ MultiVector class
Epetra.MultiVector: A class for constructing and using dense multi- vectors,
vectors and matrices in parallel.
The Epetra.MultiVector class enables the construction and use of real-
valued, double- precision dense vectors, multi-vectors, and matrices in a
distributed memory environment. The dimensions and distribution of the dense
multi-vectors is determined in part by a Epetra.Comm object, a Epetra.Map
(or Epetra.LocalMap or Epetra.BlockMap) and the number of vectors passed to
the constructors described below.
There are several concepts that important for understanding the
Epetra.MultiVector class:
Multi-vectors, Vectors and Matrices. Vector - A list of real-valued,
double-precision numbers. Also a multi-vector with one vector.
Multi-Vector - A collection of one or more vectors, all having the same
length and distribution.
(Dense) Matrix - A special form of multi-vector such that stride in memory
between any two consecutive vectors in the multi-vector is the same for all
vectors. This is identical to a two-dimensional array in Fortran and plays
an important part in high performance computations.
Distributed Global vs. Replicated Local. Distributed Global Multi- vectors -
In most instances, a multi-vector will be partitioned across multiple memory
images associated with multiple processors. In this case, there is a unique
copy of each element and elements are spread across all processors specified
by the Epetra.Comm communicator.
Replicated Local Multi-vectors - Some algorithms use multi-vectors that are
too small to be distributed across all processors, the Hessenberg matrix in
a GMRES computation. In other cases, such as with block iterative methods,
block dot product functions produce small dense matrices that are required
by all processors. Replicated local multi-vectors handle these types of
situation.
Multi-vector Functions vs. Dense Matrix Functions. Multi-vector functions -
These functions operate simultaneously but independently on each vector in
the multi-vector and produce individual results for each vector.
Dense matrix functions - These functions operate on the multi-vector as a
matrix, providing access to selected dense BLAS and LAPACK operations.
In the python implementation, the MultiVector stores an underlying numpy
array, with which it shares the data buffer. This underlying numpy array
has at least two dimensions, and the first dimension corresponds to the
number of vectors. Also, almost all numpy array methods and operators are
supported.