#include <Komplex_MultiVector.hpp>
Inheritance diagram for Komplex_MultiVector:
Post-construction modification routines. | |
| with (ScalarValueReal, ScalarValueImag).int ReplaceGlobalValue(int GlobalRow | |
| Replace current (Real, Imaginary) value at the specified (GlobalRow, VectorIndex) location. | |
| with ScalarValue int | ReplaceGlobalValueReal (int GlobalRow, int VectorIndex, double ScalarValue) |
| Replace real part of the current value at the specified (GlobalRow, VectorIndex) location. | |
| with ScalarValue int | ReplaceGlobalValueImag (int GlobalRow, int VectorIndex, double ScalarValue) |
| Replace imaginary part of the current value at the specified (GlobalRow, VectorIndex) location. | |
| location | with (ScalarValueReal, ScalarValueImaginary).int ReplaceGlobalValue(int GlobalBlockRow |
| Replace current (Real, Imaginary) value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex). | |
| location with ScalarValue int | ReplaceGlobalValueReal (int GlobalBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValue) |
| Replace real part of the current value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex). | |
| location with ScalarValue int | ReplaceGlobalValueImag (int GlobalBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValue) |
| Replace imaginary part of the current value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex). | |
| int | SumIntoGlobalValue (int GlobalRow, int VectorIndex, double ScalarValueReal, double ScalarValueImag) |
| Adds the given real and imaginary values to existing values at the specified (GlobalRow, VectorIndex) location. | |
| int | SumIntoGlobalValueReal (int GlobalRow, int VectorIndex, double ScalarValue) |
| Adds the given real value to existing real value at the specified (GlobalRow, VectorIndex) location. | |
| int | SumIntoGlobalValueImag (int GlobalRow, int VectorIndex, double ScalarValue) |
| Adds the given imaginary value to existing imaginary value at the specified (GlobalRow, VectorIndex) location. | |
| int | SumIntoGlobalValue (int GlobalBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValueReal, double ScalarValueImag) |
| Adds the given real and imaginary values to existing value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location. | |
| int | SumIntoGlobalValueReal (int GlobalBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValue) |
| Adds the given real value to existing real value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location. | |
| int | SumIntoGlobalValueImag (int GlobalBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValue) |
| Adds the given imaginary value to existing imaginary value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location. | |
| int | ReplaceMyValue (int MyRow, int VectorIndex, double ScalarValueReal, double ScalarValueImag) |
| Replace current value at the specified (MyRow, VectorIndex) location with (ScalarValueReal, ScalarValueImag). | |
| int | ReplaceMyValueReal (int MyRow, int VectorIndex, double ScalarValue) |
| Replace current real value at the specified (MyRow, VectorIndex) location with ScalarValue. | |
| int | ReplaceMyValueImag (int MyRow, int VectorIndex, double ScalarValue) |
| Replace current imaginary value at the specified (MyRow, VectorIndex) location with ScalarValue. | |
| ScalarValueImag int | ReplaceMyValue (int MyBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValueReal, double ScalarValueImag) |
| Replace current value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location with (ScalarValueReal,. | |
| int | ReplaceMyValueReal (int MyBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValue) |
| Replace current real value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location with ScalarValue. | |
| int | ReplaceMyValueImag (int MyBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValue) |
| Replace current imaginary value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location with ScalarValue. | |
| int | SumIntoMyValue (int MyRow, int VectorIndex, double ScalarValueReal, double ScalarValueImag) |
| Adds (ScalarValueReal, ScalarValueImag) to existing value at the specified (MyRow, VectorIndex) location. | |
| int | SumIntoMyValueReal (int MyRow, int VectorIndex, double ScalarValue) |
| Adds ScalarValue to existing real part of the value at the specified (MyRow, VectorIndex) location. | |
| int | SumIntoMyValueImag (int MyRow, int VectorIndex, double ScalarValue) |
| Adds ScalarValue to existing imaginary part of the value at the specified (MyRow, VectorIndex) location. | |
| int | SumIntoMyValue (int MyBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValueReal, double ScalarValueImag) |
| Adds (ScalarValueReal, ScalarValueImag) to existing value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location. | |
| int | SumIntoMyValueReal (int MyBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValue) |
| Adds ScalarValue to existing real part of the value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location. | |
| int | SumIntoMyValueImag (int MyBlockRow, int BlockRowOffset, int VectorIndex, double ScalarValue) |
| Adds ScalarValue to existing imaginary part of the value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location. | |
| int | VectorIndex |
| int double | ScalarValueReal |
| int double double | ScalarValueImag |
| location int | BlockRowOffset |
| location int int | VectorIndex |
| location int int double | ScalarValueReal |
| location int int double double | ScalarValueImaginary |
Public Member Functions | |
| int | ReplaceMap (const Epetra_BlockMap &map) |
| Replace map, only if new map has same point-structure as current map. | |
| void | PrintReal (ostream &os) |
| void | PrintImag (ostream &os) |
| int | ReplaceMap (const Epetra_BlockMap &Map) |
| Replace map, only if new map has same point-structure as current map. | |
Constructors/destructors. | |
| Komplex_MultiVector (const Epetra_BlockMap &Map, int NumVectors, bool RHS, bool zeroOut=true, Komplex_KForms KForm=K1) | |
| Basic Komplex_MultiVector constuctor. | |
| Komplex_MultiVector (const Komplex_MultiVector &Source) | |
| Komplex_MultiVector copy constructor. | |
| Komplex_MultiVector (Epetra_DataAccess CV, const Epetra_BlockMap &Map, double *A, int MyLDA, int NumVectors, bool RHS, Komplex_KForms KForm=K1) | |
| Set multivector values from two-dimensional array. | |
| Komplex_MultiVector (Epetra_DataAccess CV, const Epetra_BlockMap &Map, double *Real, double *Imag, int MyLDA, int NumVectors, bool RHS, Komplex_KForms KForm=K1) | |
| Set multivector values from two two-dimensional arrays. | |
| Komplex_MultiVector (Epetra_DataAccess CV, const Epetra_BlockMap &Map, double **ArrayOfPointers, int NumVectors, bool RHS, Komplex_KForms KForm=K1) | |
| Set multivector values from array of pointers. | |
| Komplex_MultiVector (Epetra_DataAccess CV, const Epetra_BlockMap &Map, double **AOPReal, double **AOPImag, int NumVectors, bool RHS, Komplex_KForms KForm=K1) | |
| Set multivector values from two arrays of pointers, representing the real and imaginary parts. | |
| Komplex_MultiVector (Epetra_DataAccess CV, const Epetra_MultiVector &Source, int *Indices, int NumVectors, bool RHS, Komplex_KForms KForm=K1) | |
| Set multivector values from list of vectors in an existing Epetra_MultiVector. | |
| Komplex_MultiVector (Epetra_DataAccess CV, const Epetra_MultiVector &Source, int StartIndex, int NumVectors, bool RHS, Komplex_KForms KForm=K1) | |
| Set multivector values from range of vectors in an existing Epetra_MultiVector. | |
| Komplex_MultiVector (Epetra_DataAccess CV, const Epetra_MultiVector &Source, bool RHS, Komplex_KForms KForm=K1) | |
| Set multivector values from an existing Epetra_MultiVector, with the real and imaginary parts interleaved. | |
| Komplex_MultiVector (Epetra_DataAccess CV, const Epetra_MultiVector &Real, const Epetra_MultiVector &Imag, bool RHS, Komplex_KForms KForm=K1) | |
| Set multivector values from two Epetra_MultiVectors, one representing the real and the other the imaginary values. | |
| virtual | ~Komplex_MultiVector () |
| Komplex_MultiVector destructor. | |
Post-construction modification routines. | |
| int | ReplaceGlobalValue (int GlobalRow, int VectorIndex, double ScalarValue) |
| Replace current value at the specified (GlobalRow, VectorIndex) location with ScalarValue. | |
| int | SumIntoGlobalValue (int GlobalRow, int VectorIndex, double ScalarValue) |
| Add ScalarValue to existing value at the specified (GlobalRow, VectorIndex) location. | |
| int | ReplaceMyValue (int MyRow, int VectorIndex, double ScalarValue) |
| Replace current value at the specified (MyRow, VectorIndex) location with ScalarValue. | |
| int | SumIntoMyValue (int MyRow, int VectorIndex, double ScalarValue) |
| Add ScalarValue to existing value at the specified (MyRow, VectorIndex) location. | |
| int | PutScalar (double ScalarConstant) |
| Initialize all values in a multivector with constant value. | |
| int | Random () |
| Set multivector values to random numbers. | |
| void | CreateOtherMap () |
| Creates a map one-half or twice the size of the existing map, allowing for return of the real parts, the imaginary parts, or an interleaved multivector when given the opposite in the constructor. | |
Mathematical methods. | |
| int | Dot (const Komplex_MultiVector &A, double *Result) const |
| Computes dot product of each corresponding pair of vectors. | |
| int | Abs (const Komplex_MultiVector &A) |
| Puts element-wise absolute values of input multivector in target. | |
| int | Reciprocal (const Komplex_MultiVector &A) |
| Puts element-wise reciprocal values of input multivector in target. | |
| int | Scale (double ScalarValue) |
| Scale the current values of a multivector, this = ScalarValue*this. | |
| int | Scale (double ScalarA, const Komplex_MultiVector &A) |
| Replace multivector values with scaled values of A, this = ScalarA*A. | |
| int | Update (double ScalarA, const Komplex_MultiVector &A, double ScalarThis) |
| Update multivector values with scaled values of A, this = ScalarThis*this + ScalarA*A. | |
| int | Update (double ScalarA, const Komplex_MultiVector &A, double ScalarB, const Komplex_MultiVector &B, double ScalarThis) |
| Update multivector with scaled values of A and B, this = ScalarThis*this + ScalarA*A + ScalarB*B. | |
| int | Norm1 (double *Result) const |
| Compute the 1-norm of each vector in multivector. | |
| int | ComplexNorm1 (double *Result) const |
| Compute the 1-norm of each vector, regarded as a complex vector, in multivector. | |
| int | Norm2 (double *Result) const |
| Compute the 2-norm of each vector in multivector. | |
| int | ComplexNorm2 (double *Result) const |
| Compute the 2-norm of each vector, regarded as a complex vector, in multivector. | |
| int | NormInf (double *Result) const |
| Compute the Inf-norm of each vector in multivector. | |
| int | ComplexNormInf (double *Result) const |
| Compute the Inf-norm of each vector, regarded as a comnplex vector, in multivector. | |
| int | NormWeighted (const Epetra_MultiVector &Weights, double *Result) const |
| Compute the Weighted 2-norm (RMS Norm) of each vector in multivector. | |
| int | MinValue (double *Result) const |
| Compute minimum value of each vector in multivector. | |
| int | MaxValue (double *Result) const |
| Compute maximum value of each vector in multivector. | |
| int | MeanValue (double *Result) const |
| Compute mean (average) value of each vector in multivector. | |
Random number utilities | |
| int | SetSeed (unsigned int Seed) |
| Set seed for Random function. | |
| unsigned int | Seed () const |
| Get seed from Random function. | |
Overloaded operators | |
| Komplex_MultiVector & | operator= (const Komplex_MultiVector &Source) |
| = Operator. | |
| double *& | operator[] (int i) |
| Vector access function. | |
| double *const & | operator[] (int i) const |
| Vector access function. | |
| Epetra_MultiVector * | EpetraMultiVector () const |
| Conversion to Epetra_MultiVector. | |
| Epetra_MultiVector * | RealMultiVector () const |
| Conversion of real parts to Epetra_MultiVector. | |
| Epetra_MultiVector * | ImagMultiVector () const |
| Conversion of imaginary parts to Epetra_MultiVector. | |
| Epetra_Vector * | EpetraVector (int index) const |
| Single vector conversion to Epetra_Vector. | |
| Epetra_Vector * | RealVector (int index) const |
| Single vector conversion to Epetra_Vector, including only the real values. | |
| Epetra_Vector * | ImagVector (int index) const |
| Single vector conversion to Epetra_Vector, including only the imaginary values. | |
| double *& | RealValues (int i) const |
| Vector access function. | |
| double *& | ImagValues (int i) const |
| Vector access function. | |
Attribute access functions | |
| int | NumVectors () const |
| Returns the number of vectors in the multivector. | |
| int | MyLength () const |
| Returns the local vector length on the calling processor of vectors in the multivector. | |
| int | GlobalLength () const |
| Returns the global vector length of vectors in the multivector. | |
| Komplex_KForms | KForm () const |
| Returns the current K form. | |
| bool | RHS () const |
| Returns true if this is a right-hand side multivector, false otherwise. | |
| int | SwitchKForm (Komplex_KForms NewKForm) |
| Switches the current K form. | |
I/O methods | |
| virtual void | Print (ostream &os) const |
| Print method. | |
Constructors/destructors. | |
| Komplex_MultiVector (const Epetra_BlockMap &Map, int NumVectors, bool zeroOut=true) | |
| Basic Komplex_MultiVector constuctor with one map. | |
| Komplex_MultiVector (const Epetra_BlockMap &MapReal, const Epetra_BlockMap &MapImag, int NumVectors, bool zeroOut=true) | |
| Basic Komplex_MultiVector constuctor with two maps. | |
| Komplex_MultiVector (const Epetra_BlockMap &Map, const Epetra_MultiVector &Br, const Epetra_MultiVector &Bi) | |
| General Komplex_MultiVector constructor with one map. | |
| Komplex_MultiVector (const Epetra_BlockMap &MapReal, const Epetra_BlockMap &MapImag, const Epetra_MultiVector &Br, const Epetra_MultiVector &Bi) | |
| General Komplex_MultiVector constructor with two maps. | |
| Komplex_MultiVector (const Komplex_MultiVector &Source) | |
| Komplex_MultiVector copy constructor. | |
| Komplex_MultiVector (Komplex_DataAccess CV, const Komplex_MultiVector &Source, int *Indices, int NumVectors) | |
| Set multi-vector values from list of vectors in an existing Komplex_MultiVector. | |
| Komplex_MultiVector (Komplex_DataAccess CV, const Komplex_MultiVector &Source, int StartIndex, int NumVectors) | |
| Set multi-vector values from range of vectors in an existing Komplex_MultiVector. | |
| virtual | ~Komplex_MultiVector () |
| Komplex_MultiVector destructor. | |
Mathematical methods. | |
| int | Scale (double ScalarValue) |
| Scale the current values of a multi-vector, this = ScalarValue*this. | |
| part separately int | Scale (double ScalarValueReal, double ScalarValueImag) |
| Scale the current values of a multi-vector, scaling the real and the imaginary. | |
| int | Scale (double ScalarA, const Komplex_MultiVector &A) |
| Replace multi-vector values with scaled values of A, this = ScalarA*A. | |
| parts separately int | Scale (double ScalarAReal, double ScalarAImag, const Komplex_MultiVector &A) |
| Replace multi-vector values with scaled values of A, scaling the real and the imaginary. | |
| int | Norm1 (double *Result) const |
| Compute 1-norm of each vector in multi-vector. | |
| int | Norm2 (double *Result) const |
| Compute 2-norm of each vector in multi-vector. | |
| int | NormInf (double *Result) const |
| Compute Inf-norm of each vector in multi-vector. | |
| int | Multiply (char TransA, char TransB, double ScalarAB, const Komplex_MultiVector &A, const Komplex_MultiVector &B, double ScalarThis) |
| Matrix-Matrix multiplication, this = ScalarThis*this + ScalarAB*A*B. | |
| int | Multiply (double ScalarAB, const Komplex_MultiVector &A, const Komplex_MultiVector &B, double ScalarThis) |
| Multiply a Komplex_MultiVector with another, element-by-element. | |
Overloaded operators | |
| Komplex_MultiVector & | operator= (const Komplex_MultiVector &Source) |
| = Operator. | |
| double *& | operator[] (int i) |
| Vector access function. | |
| double *const & | operator[] (int i) const |
| Vector access function. | |
| Komplex_Vector *& | operator() (int i) |
| Vector access function. | |
| const Komplex_Vector *& | operator() (int i) const |
| Vector access function. | |
Attribute access functions | |
| int | NumVectors () const |
| Returns the number of vectors in the multi-vector. | |
| int | MyLength () const |
| Returns the local vector length on the calling processor of vectors in the multi-vector. | |
| int | GlobalLength () const |
| Returns the global vector length of vectors in the multi-vector. | |
| int | Stride () const |
| Returns the stride between vectors in the multi-vector (only meaningful if ConstantStride() is true). | |
| bool | ConstantStride () const |
| Returns true if this multi-vector has constant stride between vectors. | |
I/O methods | |
| void | Print (ostream &os) const |
| Print method. | |
Protected Member Functions | |
| void | CreateHalfMap () |
| void | CreateDoubleMap () |
The Komplex_MultiVector class enables the construction and use of equivalent real formulations of complex-valued, double-precision dense vectors, multivectors, and matrices in a distributed memory environment. The dimensions and distribution of the dense multivectors is determined by the Komplex_MultiVector object(s) as described below.
There are several concepts that important for understanding the Komplex_MultiVector class:
Constructing Komplex_MultiVectors
Except for the basic constructor and copy constructor, Komplex_MultiVector constructors have two data access modes:
Extracting Data from Komplex_MultiVectors
Once a Komplex_MultiVector is constructed, it is possible to view it as an Epetra_MultiVector.
Vector, Matrix and Utility Functions
Once a Komplex_MultiVector is constructed, a variety of mathematical functions can be applied to the individual vectors. Specifically:
In addition, a matrix-matrix multiply function supports a variety of operations on any viable combination of global distributed and local replicated multivectors using calls to DGEMM, a high performance kernel for matrix operations. In the near future we will add support for calls to other selected BLAS and LAPACK functions.
Counting Floating Point Operations
Each Komplex_MultiVector object keeps track of the number of serial floating point operations performed using the specified object as the this argument to the function. The Flops() function returns this number as a double precision number. Using this information, in conjunction with the Epetra_Time class, one can get accurate parallel performance numbers. The ResetFlops() function resets the floating point counter.
|
||||||||||||||||||||||||
|
Basic Komplex_MultiVector constuctor. Creates a Komplex_MultiVector object and, by default, fills with zero values.
|
|
||||||||||||||||||||||||||||||||
|
Set multivector values from two-dimensional array.
|
|
||||||||||||||||||||||||||||||||||||
|
Set multivector values from two two-dimensional arrays.
|
|
||||||||||||||||||||||||||||
|
Set multivector values from array of pointers.
|
|
||||||||||||||||||||||||||||||||
|
Set multivector values from two arrays of pointers, representing the real and imaginary parts.
|
|
||||||||||||||||||||||||||||
|
Set multivector values from list of vectors in an existing Epetra_MultiVector.
|
|
||||||||||||||||||||||||||||
|
Set multivector values from range of vectors in an existing Epetra_MultiVector.
|
|
||||||||||||||||||||
|
Set multivector values from an existing Epetra_MultiVector, with the real and imaginary parts interleaved.
|
|
||||||||||||||||||||||||
|
Set multivector values from two Epetra_MultiVectors, one representing the real and the other the imaginary values.
|
|
||||||||||||||||
|
Basic Komplex_MultiVector constuctor with one map. Creates a Komplex_MultiVector object and, by default, fills it with zero values.
|
|
||||||||||||||||||||
|
Basic Komplex_MultiVector constuctor with two maps. Creates a Komplex_MultiVector object and, by default, fills it with zero values.
|
|
||||||||||||||||
|
General Komplex_MultiVector constructor with one map.
|
|
||||||||||||||||||||
|
General Komplex_MultiVector constructor with two maps.
|
|
||||||||||||||||||||
|
Set multi-vector values from list of vectors in an existing Komplex_MultiVector.
|
|
||||||||||||||||||||
|
Set multi-vector values from range of vectors in an existing Komplex_MultiVector.
|
|
|
Puts element-wise absolute values of input multivector in target.
|
|
|
Compute the 1-norm of each vector, regarded as a complex vector, in multivector.
|
|
|
Compute the 2-norm of each vector, regarded as a complex vector, in multivector.
|
|
|
Compute the Inf-norm of each vector, regarded as a comnplex vector, in multivector.
|
|
||||||||||||
|
Computes dot product of each corresponding pair of vectors.
|
|
|
Conversion to Epetra_MultiVector.
|
|
|
Single vector conversion to Epetra_Vector.
|
|
|
Conversion of imaginary parts to Epetra_MultiVector.
|
|
|
Vector access function.
|
|
|
Single vector conversion to Epetra_Vector, including only the imaginary values.
|
|
|
Compute maximum value of each vector in multivector.
|
|
|
Compute mean (average) value of each vector in multivector.
|
|
|
Compute minimum value of each vector in multivector.
|
|
||||||||||||||||||||
|
Multiply a Komplex_MultiVector with another, element-by-element. This function supports diagonal matrix multiply. A is usually a single vector while B and this may have one or more columns. Note that B and this must have the same shape. A can be one vector or have the same shape as B. The actual computation is this = ScalarThis * this + ScalarAB * B @ A where @ denotes element-wise multiplication. |
|
||||||||||||||||||||||||||||
|
Matrix-Matrix multiplication, this = ScalarThis*this + ScalarAB*A*B. This function performs a variety of matrix-matrix multiply operations, interpreting the Komplex_MultiVectors (this-aka C , A and B) as 2D matrices. Variations are due to the fact that A, B and C can be local replicated or global distributed Komplex_MultiVectors and that we may or may not operate with the transpose of A and B. Possible cases are:
Total of 32 case (2^5).
Num
OPERATIONS case Notes
1) C(local) = A^X(local) * B^X(local) 4 (X=Transpose or Not, No comm needed)
2) C(local) = A^T(distr) * B (distr) 1 (2D dot product, replicate C)
3) C(distr) = A (distr) * B^X(local) 2 (2D vector update, no comm needed)
Note that the following operations are not meaningful for
1D distributions:
1) C(local) = A^T(distr) * B^T(distr) 1
2) C(local) = A (distr) * B^X(distr) 2
3) C(distr) = A^X(local) * B^X(local) 4
4) C(distr) = A^X(local) * B^X(distr) 4
5) C(distr) = A^T(distr) * B^X(local) 2
6) C(local) = A^X(distr) * B^X(local) 4
7) C(distr) = A^X(distr) * B^X(local) 4
8) C(local) = A^X(local) * B^X(distr) 4
|
|
|
Compute 1-norm of each vector in multi-vector.
|
|
|
Compute the 1-norm of each vector in multivector.
|
|
|
Compute 2-norm of each vector in multi-vector.
|
|
|
Compute the 2-norm of each vector in multivector.
|
|
|
Compute Inf-norm of each vector in multi-vector.
|
|
|
Compute the Inf-norm of each vector in multivector.
|
|
||||||||||||
|
Compute the Weighted 2-norm (RMS Norm) of each vector in multivector.
|
|
|
Vector access function.
|
|
|
Vector access function.
|
|
|
= Operator.
|
|
|
= Operator.
|
|
|
Vector access function.
Reimplemented in Komplex_Vector, and Komplex_Vector. |
|
|
Vector access function.
Reimplemented in Komplex_Vector, and Komplex_Vector. |
|
|
Vector access function.
Reimplemented in Komplex_Vector, and Komplex_Vector. |
|
|
Vector access function.
Reimplemented in Komplex_Vector, and Komplex_Vector. |
|
|
Initialize all values in a multivector with constant value.
|
|
|
Set multivector values to random numbers. This uses the random number generator provided by Epetra_Util. The multivector values will be set to random values on the interval (-1.0, 1.0).
|
|
|
Conversion of real parts to Epetra_MultiVector.
|
|
|
Vector access function.
|
|
|
Single vector conversion to Epetra_Vector, including only the real values.
|
|
|
Puts element-wise reciprocal values of input multivector in target.
|
|
||||||||||||||||
|
Replace current value at the specified (GlobalRow, VectorIndex) location with ScalarValue. Replaces the existing value for a single entry in the multivector. The specified global row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the global row will be modified. To modify a different point entry, use the other version of this method
|
|
||||||||||||||||||||
|
Replace imaginary part of the current value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex). Replaces the existing value for a single entry in the multivector. The specified global block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||
|
Replace imaginary part of the current value at the specified (GlobalRow, VectorIndex) location. Replaces the existing value for a single entry in the multivector. The specified global row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the global row will be modified. To modify a different point entry, use the other version of this method.
|
|
||||||||||||||||||||
|
Replace real part of the current value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex). Replaces the existing value for a single entry in the multivector. The specified global block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||
|
Replace real part of the current value at the specified (GlobalRow, VectorIndex) location. Replaces the existing value for a single entry in the multivector. The specified global row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the global row will be modified. To modify a different point entry, use the other version of this method.
|
|
|
Replace map, only if new map has same point-structure as current map.
Reimplemented in Komplex_Vector, and Komplex_Vector. |
|
||||||||||||||||||||||||
|
Replace current value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location with (ScalarValueReal,. Replaces the existing value for a single entry in the multivector. The specified local block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||||||
|
Replace current value at the specified (MyRow, VectorIndex) location with (ScalarValueReal, ScalarValueImag). Replaces the existing value for a single entry in the multivector. The specified local row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. This method is intended for use with vectors based on an Epetra_Map. If used on a vector based on a non-trivial Epetra_BlockMap, this will update only block row 0, i.e. Komplex_MultiVector::ReplaceMyValue ( MyRow, VectorIndex, ScalarValueReal, ScalarValueImag ) is equivalent to: Komplex_MultiVector::ReplaceMyValue ( 0, MyRow, VectorIndex, ScalarValueReal, ScalarValueImag )
|
|
||||||||||||||||
|
Replace current value at the specified (MyRow, VectorIndex) location with ScalarValue. Replaces the existing value for a single entry in the multivector. The specified local row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. This method is intended for use with vectors based on an Epetra_Map. If used on a vector based on a non-trivial Epetra_BlockMap, this will update only block row 0, i.e. Komplex_MultiVector::ReplaceMyValue (MyRow, VectorIndex, ScalarValue) is equivalent to: Komplex_MultiVector::ReplaceMyValue (0, MyRow, VectorIndex, ScalarValue)
|
|
||||||||||||||||||||
|
Replace current imaginary value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location with ScalarValue. Replaces the existing value for a single entry in the multivector. The specified local block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||
|
Replace current imaginary value at the specified (MyRow, VectorIndex) location with ScalarValue. Replaces the existing value for a single entry in the multivector. The specified local row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. This method is intended for use with vectors based on an Epetra_Map. If used on a vector based on a non-trivial Epetra_BlockMap, this will update only block row 0, i.e. Komplex_MultiVector::ReplaceMyValueImag ( MyRow, VectorIndex, ScalarValue ) is equivalent to: Komplex_MultiVector::ReplaceMyValueImag ( 0, MyRow, VectorIndex, ScalarValue )
|
|
||||||||||||||||||||
|
Replace current real value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location with ScalarValue. Replaces the existing value for a single entry in the multivector. The specified local block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||
|
Replace current real value at the specified (MyRow, VectorIndex) location with ScalarValue. Replaces the existing value for a single entry in the multivector. The specified local row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. This method is intended for use with vectors based on an Epetra_Map. If used on a vector based on a non-trivial Epetra_BlockMap, this will update only block row 0, i.e. Komplex_MultiVector::ReplaceMyValueReal ( MyRow, VectorIndex, ScalarValue ) is equivalent to: Komplex_MultiVector::ReplaceMyValueReal ( 0, MyRow, VectorIndex, ScalarValue )
|
|
||||||||||||||||
|
Replace multi-vector values with scaled values of A, scaling the real and the imaginary.
|
|
||||||||||||
|
Replace multi-vector values with scaled values of A, this = ScalarA*A.
|
|
||||||||||||
|
Scale the current values of a multi-vector, scaling the real and the imaginary.
|
|
|
Scale the current values of a multi-vector, this = ScalarValue*this.
Reimplemented in Komplex_Vector, and Komplex_Vector. |
|
||||||||||||
|
Replace multivector values with scaled values of A, this = ScalarA*A.
|
|
|
Scale the current values of a multivector, this = ScalarValue*this.
Reimplemented in Komplex_Vector, and Komplex_Vector. |
|
|
Get seed from Random function.
|
|
|
Set seed for Random function.
|
|
||||||||||||||||||||||||
|
Adds the given real and imaginary values to existing value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location. Sums the given (real, imaginary) value into the existing value for a single entry in the multivector. The specified global block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||||||
|
Adds the given real and imaginary values to existing values at the specified (GlobalRow, VectorIndex) location. Sums the given (real, imaginary) value into the existing value for a single entry in the multivector. The specified global row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the global row will be modified. To modify a different point entry, use the other version of this method.
|
|
||||||||||||||||
|
Add ScalarValue to existing value at the specified (GlobalRow, VectorIndex) location. Sums the given value into the existing value for a single entry in the multivector. The specified global row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the global row will be modified. To modify a different point entry, use the other version of this method
|
|
||||||||||||||||||||
|
Adds the given imaginary value to existing imaginary value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location. Sums the given imaginary value into the existing value for a single entry in the multivector. The specified global block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||
|
Adds the given imaginary value to existing imaginary value at the specified (GlobalRow, VectorIndex) location. Sums the given imaginary ScalarValue into the existing value for a single entry in the multivector. The specified global row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the global row will be modified. To modify a different point entry, use the other version of this method.
|
|
||||||||||||||||||||
|
Adds the given real value to existing real value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location. Sums the given real value into the existing value for a single entry in the multivector. The specified global block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||
|
Adds the given real value to existing real value at the specified (GlobalRow, VectorIndex) location. Sums the given real ScalarValue into the existing value for a single entry in the multivector. The specified global row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the global row will be modified. To modify a different point entry, use the other version of this method.
|
|
||||||||||||||||||||||||
|
Adds (ScalarValueReal, ScalarValueImag) to existing value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location. Sums the given value into the existing value for a single entry in the multivector. The specified local block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||||||
|
Adds (ScalarValueReal, ScalarValueImag) to existing value at the specified (MyRow, VectorIndex) location. Sums the given value into the existing value for a single entry in the multivector. The specified local row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the local row will be modified. To modify a different point entry, use the other version of this method.
|
|
||||||||||||||||
|
Add ScalarValue to existing value at the specified (MyRow, VectorIndex) location. Sums the given value into the existing value for a single entry in the multivector. The specified local row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the local row will be modified. To modify a different point entry, use the other version of this method
|
|
||||||||||||||||||||
|
Adds ScalarValue to existing imaginary part of the value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location. Sums the given value into the existing value for a single entry in the multivector. The specified local block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||
|
Adds ScalarValue to existing imaginary part of the value at the specified (MyRow, VectorIndex) location. Sums the given value into the existing value for a single entry in the multivector. The specified local row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the local row will be modified. To modify a different point entry, use the other version of this method.
|
|
||||||||||||||||||||
|
Adds ScalarValue to existing real part of the value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location. Sums the given value into the existing value for a single entry in the multivector. The specified local block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||||||
|
Adds ScalarValue to existing real part of the value at the specified (MyRow, VectorIndex) location. Sums the given value into the existing value for a single entry in the multivector. The specified local row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the local row will be modified. To modify a different point entry, use the other version of this method.
|
|
|
Switches the current K form.
|
|
||||||||||||||||||||||||
|
Update multivector with scaled values of A and B, this = ScalarThis*this + ScalarA*A + ScalarB*B.
|
|
||||||||||||||||
|
Update multivector values with scaled values of A, this = ScalarThis*this + ScalarA*A.
|
|
||||||||||||
|
Replace current (Real, Imaginary) value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex). Replaces the existing value for a single entry in the multivector. The specified global block row and block row offset must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication.
|
|
||||||||||||
|
Replace current (Real, Imaginary) value at the specified (GlobalRow, VectorIndex) location. Replaces the existing value for a single entry in the multivector. The specified global row must correspond to a GID owned by the map of the multivector on the calling processor. In other words, this method does not perform cross-processor communication. If the map associated with this multivector is an Epetra_BlockMap, only the first point entry associated with the global row will be modified. To modify a different point entry, use the other version of this method.
|
1.3.9.1