Epetra_IntMultiVector: A class for constructing and using dense multi-vectors, vectors and matrices in parallel. More...
#include <Epetra_IntMultiVector.h>
Public Member Functions | |
int | ReplaceMap (const Epetra_BlockMap &map) |
int | Reduce () |
Constructors/destructors | |
Epetra_IntMultiVector (const Epetra_BlockMap &Map, int NumVectors, bool zeroOut=true) | |
Basic Epetra_IntMultiVector constuctor. More... | |
Epetra_IntMultiVector (const Epetra_IntMultiVector &Source) | |
Epetra_MultiVector copy constructor. | |
Epetra_IntMultiVector (Epetra_DataAccess CV, const Epetra_BlockMap &Map, int *A, int MyLDA, int NumVectors) | |
Set multi-vector values from two-dimensional array. More... | |
Epetra_IntMultiVector (Epetra_DataAccess CV, const Epetra_BlockMap &Map, int **ArrayOfPointers, int NumVectors) | |
Set multi-vector values from array of pointers. More... | |
Epetra_IntMultiVector (Epetra_DataAccess CV, const Epetra_IntMultiVector &Source, int *Indices, int NumVectors) | |
Set multi-vector values from list of vectors in an existing Epetra_IntMultiVector. More... | |
Epetra_IntMultiVector (Epetra_DataAccess CV, const Epetra_IntMultiVector &Source, int StartIndex, int NumVectors) | |
Set multi-vector values from range of vectors in an existing Epetra_IntMultiVector. More... | |
virtual | ~Epetra_IntMultiVector () |
Epetra_MultiVector destructor. | |
Post-construction modification routines | |
int | ReplaceGlobalValue (int GlobalRow, int VectorIndex, int OrdinalValue) |
Replace current value at the specified (GlobalRow, VectorIndex) location with OrdinalValue. More... | |
int | ReplaceGlobalValue (long long GlobalRow, int VectorIndex, int OrdinalValue) |
int | ReplaceGlobalValue (int GlobalBlockRow, int BlockRowOffset, int VectorIndex, int OrdinalValue) |
Replace current value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location with OrdinalValue. More... | |
int | ReplaceGlobalValue (long long GlobalBlockRow, int BlockRowOffset, int VectorIndex, int OrdinalValue) |
int | SumIntoGlobalValue (int GlobalRow, int VectorIndex, int OrdinalValue) |
Adds OrdinalValue to existing value at the specified (GlobalRow, VectorIndex) location. More... | |
int | SumIntoGlobalValue (long long GlobalRow, int VectorIndex, int OrdinalValue) |
int | SumIntoGlobalValue (int GlobalBlockRow, int BlockRowOffset, int VectorIndex, int OrdinalValue) |
Adds OrdinalValue to existing value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location. More... | |
int | SumIntoGlobalValue (long long GlobalBlockRow, int BlockRowOffset, int VectorIndex, int OrdinalValue) |
int | ReplaceMyValue (int MyRow, int VectorIndex, int OrdinalValue) |
Replace current value at the specified (MyRow, VectorIndex) location with OrdinalValue. More... | |
int | ReplaceMyValue (int MyBlockRow, int BlockRowOffset, int VectorIndex, int OrdinalValue) |
Replace current value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location with OrdinalValue. More... | |
int | SumIntoMyValue (int MyRow, int VectorIndex, int OrdinalValue) |
Adds OrdinalValue to existing value at the specified (MyRow, VectorIndex) location. More... | |
int | SumIntoMyValue (int MyBlockRow, int BlockRowOffset, int VectorIndex, int OrdinalValue) |
Adds OrdinalValue to existing value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location. More... | |
int | PutScalar (int OrdinalConstant) |
Initialize all values in a multi-vector with constant value. More... | |
Extraction methods | |
int | ExtractCopy (int *A, int MyLDA) const |
Put multi-vector values into user-provided two-dimensional array. More... | |
int | ExtractCopy (int **ArrayOfPointers) const |
Put multi-vector values into user-provided array of pointers. More... | |
int | ExtractView (int **A, int *MyLDA) const |
Set user-provided addresses of A and MyLDA. More... | |
int | ExtractView (int ***ArrayOfPointers) const |
Set user-provided addresses of ArrayOfPointers. More... | |
Mathematical methods | |
int | MinValue (int *Result) const |
Compute minimum value of each vector in multi-vector. More... | |
int | MaxValue (int *Result) const |
Compute maximum value of each vector in multi-vector. More... | |
Overloaded operators | |
Epetra_IntMultiVector & | operator= (const Epetra_IntMultiVector &Source) |
= Operator. More... | |
int *& | operator[] (int i) |
Vector access function. More... | |
int *const & | operator[] (int i) const |
Vector access function. More... | |
Epetra_IntVector *& | operator() (int i) |
Vector access function. More... | |
const Epetra_IntVector *& | operator() (int i) const |
Vector access function. More... | |
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. | |
long long | GlobalLength64 () const |
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 | |
virtual void | Print (std::ostream &os) const |
Print method. | |
Expert-only unsupported methods | |
int | ResetView (int **ArrayOfPointers) |
Reset the view of an existing multivector to point to new user data. More... | |
int * | Values () const |
Get pointer to MultiVector values. | |
int ** | Pointers () const |
Get pointer to individual vector pointers. | |
Public Member Functions inherited from Epetra_DistObject | |
Epetra_DistObject (const Epetra_BlockMap &Map) | |
Basic Epetra_DistObject constuctor. More... | |
Epetra_DistObject (const Epetra_BlockMap &Map, const char *const Label) | |
Epetra_DistObject (const Epetra_DistObject &Source) | |
Epetra_DistObject copy constructor. | |
virtual | ~Epetra_DistObject () |
Epetra_DistObject destructor. | |
int | Import (const Epetra_SrcDistObject &A, const Epetra_Import &Importer, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0) |
Imports an Epetra_DistObject using the Epetra_Import object. More... | |
int | Import (const Epetra_SrcDistObject &A, const Epetra_Export &Exporter, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0) |
Imports an Epetra_DistObject using the Epetra_Export object. More... | |
int | Export (const Epetra_SrcDistObject &A, const Epetra_Import &Importer, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0) |
Exports an Epetra_DistObject using the Epetra_Import object. More... | |
int | Export (const Epetra_SrcDistObject &A, const Epetra_Export &Exporter, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor=0) |
Exports an Epetra_DistObject using the Epetra_Export object. More... | |
const Epetra_BlockMap & | Map () const |
Returns the address of the Epetra_BlockMap for this multi-vector. | |
const Epetra_Comm & | Comm () const |
Returns the address of the Epetra_Comm for this multi-vector. | |
bool | DistributedGlobal () const |
Returns true if this multi-vector is distributed global, i.e., not local replicated. | |
Public Member Functions inherited from Epetra_Object | |
Epetra_Object (int TracebackModeIn=-1, bool set_label=true) | |
Epetra_Object Constructor. More... | |
Epetra_Object (const char *const Label, int TracebackModeIn=-1) | |
Epetra_Object Constructor. More... | |
Epetra_Object (const Epetra_Object &Object) | |
Epetra_Object Copy Constructor. More... | |
virtual | ~Epetra_Object () |
Epetra_Object Destructor. More... | |
virtual int | ReportError (const std::string Message, int ErrorCode) const |
Error reporting method. | |
virtual void | SetLabel (const char *const Label) |
Epetra_Object Label definition using char *. More... | |
virtual const char * | Label () const |
Epetra_Object Label access funtion. More... | |
Public Member Functions inherited from Epetra_SrcDistObject | |
virtual | ~Epetra_SrcDistObject () |
Epetra_SrcDistObject destructor. | |
Public Member Functions inherited from Epetra_CompObject | |
Epetra_CompObject & | operator= (const Epetra_CompObject &src) |
Epetra_CompObject () | |
Basic Epetra_CompObject constuctor. | |
Epetra_CompObject (const Epetra_CompObject &Source) | |
Epetra_CompObject copy constructor. | |
virtual | ~Epetra_CompObject () |
Epetra_CompObject destructor. | |
void | SetFlopCounter (const Epetra_Flops &FlopCounter_in) |
Set the internal Epetra_Flops() pointer. | |
void | SetFlopCounter (const Epetra_CompObject &CompObject) |
Set the internal Epetra_Flops() pointer to the flop counter of another Epetra_CompObject. | |
void | UnsetFlopCounter () |
Set the internal Epetra_Flops() pointer to 0 (no flops counted). | |
Epetra_Flops * | GetFlopCounter () const |
Get the pointer to the Epetra_Flops() object associated with this object, returns 0 if none. | |
void | ResetFlops () const |
Resets the number of floating point operations to zero for this multi-vector. | |
double | Flops () const |
Returns the number of floating point operations with this multi-vector. | |
void | UpdateFlops (int Flops_in) const |
Increment Flop count for this object. | |
void | UpdateFlops (long int Flops_in) const |
Increment Flop count for this object. | |
void | UpdateFlops (long long Flops_in) const |
Increment Flop count for this object. | |
void | UpdateFlops (double Flops_in) const |
Increment Flop count for this object. | |
void | UpdateFlops (float Flops_in) const |
Increment Flop count for this object. | |
Public Member Functions inherited from Epetra_BLAS | |
Epetra_BLAS (void) | |
Epetra_BLAS Constructor. More... | |
Epetra_BLAS (const Epetra_BLAS &BLAS) | |
Epetra_BLAS Copy Constructor. More... | |
virtual | ~Epetra_BLAS (void) |
Epetra_BLAS Destructor. | |
float | ASUM (const int N, const float *X, const int INCX=1) const |
Epetra_BLAS one norm function (SASUM). | |
double | ASUM (const int N, const double *X, const int INCX=1) const |
Epetra_BLAS one norm function (DASUM). | |
float | DOT (const int N, const float *X, const float *Y, const int INCX=1, const int INCY=1) const |
Epetra_BLAS dot product function (SDOT). | |
double | DOT (const int N, const double *X, const double *Y, const int INCX=1, const int INCY=1) const |
Epetra_BLAS dot product function (DDOT). | |
float | NRM2 (const int N, const float *X, const int INCX=1) const |
Epetra_BLAS norm function (SNRM2). | |
double | NRM2 (const int N, const double *X, const int INCX=1) const |
Epetra_BLAS norm function (DNRM2). | |
void | SCAL (const int N, const float ALPHA, float *X, const int INCX=1) const |
Epetra_BLAS vector scale function (SSCAL) | |
void | SCAL (const int N, const double ALPHA, double *X, const int INCX=1) const |
Epetra_BLAS vector scale function (DSCAL) | |
void | COPY (const int N, const float *X, float *Y, const int INCX=1, const int INCY=1) const |
Epetra_BLAS vector copy function (SCOPY) | |
void | COPY (const int N, const double *X, double *Y, const int INCX=1, const int INCY=1) const |
Epetra_BLAS vector scale function (DCOPY) | |
int | IAMAX (const int N, const float *X, const int INCX=1) const |
Epetra_BLAS arg maximum of absolute value function (ISAMAX) | |
int | IAMAX (const int N, const double *X, const int INCX=1) const |
Epetra_BLAS arg maximum of absolute value function (IDAMAX) | |
void | AXPY (const int N, const float ALPHA, const float *X, float *Y, const int INCX=1, const int INCY=1) const |
Epetra_BLAS vector update function (SAXPY) | |
void | AXPY (const int N, const double ALPHA, const double *X, double *Y, const int INCX=1, const int INCY=1) const |
Epetra_BLAS vector update function (DAXPY) | |
void | GEMV (const char TRANS, const int M, const int N, const float ALPHA, const float *A, const int LDA, const float *X, const float BETA, float *Y, const int INCX=1, const int INCY=1) const |
Epetra_BLAS matrix-vector multiply function (SGEMV) | |
void | GEMV (const char TRANS, const int M, const int N, const double ALPHA, const double *A, const int LDA, const double *X, const double BETA, double *Y, const int INCX=1, const int INCY=1) const |
Epetra_BLAS matrix-vector multiply function (DGEMV) | |
void | GEMM (const char TRANSA, const char TRANSB, const int M, const int N, const int K, const float ALPHA, const float *A, const int LDA, const float *B, const int LDB, const float BETA, float *C, const int LDC) const |
Epetra_BLAS matrix-matrix multiply function (SGEMM) | |
void | GEMM (const char TRANSA, const char TRANSB, const int M, const int N, const int K, const double ALPHA, const double *A, const int LDA, const double *B, const int LDB, const double BETA, double *C, const int LDC) const |
Epetra_BLAS matrix-matrix multiply function (DGEMM) | |
void | SYMM (const char SIDE, const char UPLO, const int M, const int N, const float ALPHA, const float *A, const int LDA, const float *B, const int LDB, const float BETA, float *C, const int LDC) const |
Epetra_BLAS symmetric matrix-matrix multiply function (SSYMM) | |
void | SYMM (const char SIDE, const char UPLO, const int M, const int N, const double ALPHA, const double *A, const int LDA, const double *B, const int LDB, const double BETA, double *C, const int LDC) const |
Epetra_BLAS matrix-matrix multiply function (DSYMM) | |
void | TRMM (const char SIDE, const char UPLO, const char TRANSA, const char DIAG, const int M, const int N, const float ALPHA, const float *A, const int LDA, float *B, const int LDB) const |
Epetra_BLAS triangular matrix-matrix multiply function (STRMM) | |
void | TRMM (const char SIDE, const char UPLO, const char TRANSA, const char DIAG, const int M, const int N, const double ALPHA, const double *A, const int LDA, double *B, const int LDB) const |
Epetra_BLAS triangular matrix-matrix multiply function (DTRMM) | |
void | SYRK (const char UPLO, const char TRANS, const int N, const int K, const float ALPHA, const float *A, const int LDA, const float BETA, float *C, const int LDC) const |
Eperta_BLAS symetric rank k funtion (ssyrk) | |
void | SYRK (const char UPLO, const char TRANS, const int N, const int K, const double ALPHA, const double *A, const int LDA, const double BETA, double *C, const int LDC) const |
Eperta_BLAS symetric rank k funtion (dsyrk) | |
Protected Member Functions | |
void | Assign (const Epetra_IntMultiVector &rhs) |
int | CheckInput () |
Protected Member Functions inherited from Epetra_DistObject | |
virtual int | DoTransfer (const Epetra_SrcDistObject &A, Epetra_CombineMode CombineMode, int NumSameIDs, int NumPermuteIDs, int NumRemoteIDs, int NumExportIDs, int *PermuteToLIDs, int *PermuteFromLIDs, int *RemoteLIDs, int *ExportLIDs, int &LenExports, char *&Exports, int &LenImports, char *&Imports, Epetra_Distributor &Distor, bool DoReverse, const Epetra_OffsetIndex *Indexor) |
Perform actual transfer (redistribution) of data across memory images, using Epetra_Distributor object. | |
Protected Member Functions inherited from Epetra_Object | |
std::string | toString (const int &x) const |
std::string | toString (const long long &x) const |
std::string | toString (const double &x) const |
Protected Attributes | |
int * | Values_ |
Protected Attributes inherited from Epetra_DistObject | |
Epetra_BlockMap | Map_ |
const Epetra_Comm * | Comm_ |
char * | Exports_ |
char * | Imports_ |
int | LenExports_ |
int | LenImports_ |
int * | Sizes_ |
Protected Attributes inherited from Epetra_CompObject | |
Epetra_Flops * | FlopCounter_ |
Additional Inherited Members | |
Static Public Member Functions inherited from Epetra_Object | |
static void | SetTracebackMode (int TracebackModeValue) |
Set the value of the Epetra_Object error traceback report mode. More... | |
static int | GetTracebackMode () |
Get the value of the Epetra_Object error report mode. | |
static std::ostream & | GetTracebackStream () |
Get the output stream for error reporting. | |
Static Public Attributes inherited from Epetra_Object | |
static int | TracebackMode |
Epetra_IntMultiVector: A class for constructing and using dense multi-vectors, vectors and matrices in parallel.
The Epetra_IntMultiVector class enables the construction and use of ordinal-valued, 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_IntMultiVector class:
Constructing Epetra_IntMultiVectors
Except for the basic constructor and copy constructor, Epetra_IntMultiVector constructors have two data access modes:
All Epetra_IntMultiVector constructors require a map argument that describes the layout of elements on the parallel machine. Specifically, map
is a Epetra_Map, Epetra_LocalMap or Epetra_BlockMap object describing the desired memory layout for the multi-vector.
There are six different Epetra_IntMultiVector constructors:
Extracting Data from Epetra_IntMultiVectors
Once a Epetra_IntMultiVector is constructed, it is possible to extract a copy of the values or create a view of them.
There are four Extract functions:
Vector, Matrix and Utility Functions
Once a Epetra_IntMultiVector is constructed, a variety of mathematical functions can be applied to the individual vectors. Specifically:
Counting Floating Point Operations
Each Epetra_IntMultiVector object keep 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.
Epetra_IntMultiVector::Epetra_IntMultiVector | ( | const Epetra_BlockMap & | Map, |
int | NumVectors, | ||
bool | zeroOut = true |
||
) |
Basic Epetra_IntMultiVector constuctor.
Creates a Epetra_IntMultiVector object and, by default, fills with zero values.
In | Map - A Epetra_LocalMap, Epetra_Map or Epetra_BlockMap. |
In | NumVectors - Number of vectors in multi-vector. |
In | zeroOut - If true then the allocated memory will be zeroed out initialy. If false then this memory will not be touched which can be significantly faster. |
Epetra_IntMultiVector::Epetra_IntMultiVector | ( | Epetra_DataAccess | CV, |
const Epetra_BlockMap & | Map, | ||
int * | A, | ||
int | MyLDA, | ||
int | NumVectors | ||
) |
Set multi-vector values from two-dimensional array.
In | Epetra_DataAccess - Enumerated type set to Copy or View. |
In | Map - A Epetra_LocalMap, Epetra_Map or Epetra_BlockMap. |
In | A - Pointer to an array of ordinal numbers. The first vector starts at A. The second vector starts at A+MyLDA, the third at A+2*MyLDA, and so on. |
In | MyLDA - The "Leading Dimension", or stride between vectors in memory. |
In | NumVectors - Number of vectors in multi-vector. |
See Detailed Description section for further discussion.
Epetra_IntMultiVector::Epetra_IntMultiVector | ( | Epetra_DataAccess | CV, |
const Epetra_BlockMap & | Map, | ||
int ** | ArrayOfPointers, | ||
int | NumVectors | ||
) |
Set multi-vector values from array of pointers.
In | Epetra_DataAccess - Enumerated type set to Copy or View. |
In | Map - A Epetra_LocalMap, Epetra_Map or Epetra_BlockMap. |
In | ArrayOfPointers - An array of pointers such that ArrayOfPointers[i] points to the memory location containing ith vector to be copied. |
In | NumVectors - Number of vectors in multi-vector. |
See Detailed Description section for further discussion.
Epetra_IntMultiVector::Epetra_IntMultiVector | ( | Epetra_DataAccess | CV, |
const Epetra_IntMultiVector & | Source, | ||
int * | Indices, | ||
int | NumVectors | ||
) |
Set multi-vector values from list of vectors in an existing Epetra_IntMultiVector.
In | Epetra_DataAccess - Enumerated type set to Copy or View. |
In | Source - An existing fully constructed Epetra_IntMultiVector. |
In | Indices - Integer list of the vectors to copy. |
In | NumVectors - Number of vectors in multi-vector. |
See Detailed Description section for further discussion.
Epetra_IntMultiVector::Epetra_IntMultiVector | ( | Epetra_DataAccess | CV, |
const Epetra_IntMultiVector & | Source, | ||
int | StartIndex, | ||
int | NumVectors | ||
) |
Set multi-vector values from range of vectors in an existing Epetra_IntMultiVector.
In | Epetra_DataAccess - Enumerated type set to Copy or View. |
In | Source - An existing fully constructed Epetra_IntMultiVector. |
In | StartIndex - First of the vectors to copy. |
In | NumVectors - Number of vectors in multi-vector. |
See Detailed Description section for further discussion.
int Epetra_IntMultiVector::ExtractCopy | ( | int * | A, |
int | MyLDA | ||
) | const |
Put multi-vector values into user-provided two-dimensional array.
Out | A - Pointer to memory space that will contain the multi-vector values. The first vector will be copied to the memory pointed to by A. The second vector starts at A+MyLDA, the third at A+2*MyLDA, and so on. |
In | MyLDA - The "Leading Dimension", or stride between vectors in memory. |
See Detailed Description section for further discussion.
int Epetra_IntMultiVector::ExtractCopy | ( | int ** | ArrayOfPointers | ) | const |
Put multi-vector values into user-provided array of pointers.
Out | ArrayOfPointers - An array of pointers to memory space that will contain the multi-vector values, such that ArrayOfPointers[i] points to the memory location where the ith vector to be copied. |
See Detailed Description section for further discussion.
int Epetra_IntMultiVector::ExtractView | ( | int ** | A, |
int * | MyLDA | ||
) | const |
Set user-provided addresses of A and MyLDA.
A | (Out) - Address of a pointer to that will be set to point to the values of the multi-vector. The first vector will be at the memory pointed to by A. The second vector starts at A+MyLDA, the third at A+2*MyLDA, and so on. |
MyLDA | (Out) - Address of the "Leading Dimension", or stride between vectors in memory. |
See Detailed Description section for further discussion.
int Epetra_IntMultiVector::ExtractView | ( | int *** | ArrayOfPointers | ) | const |
Set user-provided addresses of ArrayOfPointers.
ArrayOfPointers | (Out) - Address of array of pointers to memory space that will set to the multi-vector array of pointers, such that ArrayOfPointers[i] points to the memory location where the ith vector is located. |
See Detailed Description section for further discussion.
int Epetra_IntMultiVector::MaxValue | ( | int * | Result | ) | const |
Compute maximum value of each vector in multi-vector.
Note that the vector contents must be already initialized for this function to compute a well-defined result. The length of the vector need not be greater than zero on all processors. If length is greater than zero on any processor then a valid result will be computed.
Out | Result - Result[i] contains maximum value of ith vector. |
int Epetra_IntMultiVector::MinValue | ( | int * | Result | ) | const |
Compute minimum value of each vector in multi-vector.
Note that the vector contents must be already initialized for this function to compute a well-defined result. The length of the vector need not be greater than zero on all processors. If length is greater than zero on any processor then a valid result will be computed.
Out | Result - Result[i] contains minimum value of ith vector. |
Epetra_IntVector* & Epetra_IntMultiVector::operator() | ( | int | i | ) |
Vector access function.
const Epetra_IntVector* & Epetra_IntMultiVector::operator() | ( | int | i | ) | const |
Vector access function.
Epetra_IntMultiVector& Epetra_IntMultiVector::operator= | ( | const Epetra_IntMultiVector & | Source | ) |
|
inline |
Vector access function.
|
inline |
Vector access function.
int Epetra_IntMultiVector::PutScalar | ( | int | OrdinalConstant | ) |
Initialize all values in a multi-vector with constant value.
In | OrdinalConstant - Value to use. |
int Epetra_IntMultiVector::ReplaceGlobalValue | ( | int | GlobalRow, |
int | VectorIndex, | ||
int | OrdinalValue | ||
) |
Replace current value at the specified (GlobalRow, VectorIndex) location with OrdinalValue.
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
In | GlobalRow - Row of Multivector to modify in global index space. |
In | VectorIndex - Vector within MultiVector that should to modify. |
In | OrdinalValue - Value to add to existing value. |
int Epetra_IntMultiVector::ReplaceGlobalValue | ( | int | GlobalBlockRow, |
int | BlockRowOffset, | ||
int | VectorIndex, | ||
int | OrdinalValue | ||
) |
Replace current value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location with OrdinalValue.
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.
In | GlobalBlockRow - BlockRow of Multivector to modify in global index space. |
In | BlockRowOffset - Offset into BlockRow of Multivector to modify in global index space. |
In | VectorIndex - Vector within MultiVector that should to modify. |
In | OrdinalValue - Value to add to existing value. |
int Epetra_IntMultiVector::ReplaceMap | ( | const Epetra_BlockMap & | map | ) |
Replace map, only if new map has same point-structure as current map. return 0 if map is replaced, -1 if not.
int Epetra_IntMultiVector::ReplaceMyValue | ( | int | MyRow, |
int | VectorIndex, | ||
int | OrdinalValue | ||
) |
Replace current value at the specified (MyRow, VectorIndex) location with OrdinalValue.
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.
Epetra_IntMultiVector::ReplaceMyValue ( MyRow, VectorIndex, OrdinalValue ) is equivalent to: Epetra_IntMultiVector::ReplaceMyValue ( 0, MyRow, VectorIndex, OrdinalValue )
In | MyRow - Row of IntMultivector to modify in local index space. |
In | VectorIndex - Vector within IntMultiVector that should to modify. |
In | OrdinalValue - Value to add to existing value. |
int Epetra_IntMultiVector::ReplaceMyValue | ( | int | MyBlockRow, |
int | BlockRowOffset, | ||
int | VectorIndex, | ||
int | OrdinalValue | ||
) |
Replace current value at the specified (MyBlockRow, BlockRowOffset, VectorIndex) location with OrdinalValue.
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.
In | MyBlockRow - BlockRow of Multivector to modify in local index space. |
In | BlockRowOffset - Offset into BlockRow of Multivector to modify in local index space. |
In | VectorIndex - Vector within MultiVector that should to modify. |
In | OrdinalValue - Value to add to existing value. |
int Epetra_IntMultiVector::ResetView | ( | int ** | ArrayOfPointers | ) |
Reset the view of an existing multivector to point to new user data.
Allows the (very) light-weight replacement of multivector values for an existing multivector that was constructed using an Epetra_DataAccess mode of View. No checking is performed to see if the array of values passed in contains valid data. It is assumed that the user has verified the integrity of data before calling this method. This method is useful for situations where a multivector is needed for use with an Epetra operator or matrix and the user is not passing in a multivector, or the multivector is being passed in with another map that is not exactly compatible with the operator, but has the correct number of entries.
This method is used by AztecOO and Ifpack in the matvec, and solve methods to improve performance and reduce repeated calls to constructors and destructors.
ArrayOfPointers | Contains the array of pointers containing the multivector data. |
int Epetra_IntMultiVector::SumIntoGlobalValue | ( | int | GlobalRow, |
int | VectorIndex, | ||
int | OrdinalValue | ||
) |
Adds OrdinalValue 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
In | GlobalRow - Row of Multivector to modify in global index space. |
In | VectorIndex - Vector within MultiVector that should to modify. |
In | OrdinalValue - Value to add to existing value. |
int Epetra_IntMultiVector::SumIntoGlobalValue | ( | int | GlobalBlockRow, |
int | BlockRowOffset, | ||
int | VectorIndex, | ||
int | OrdinalValue | ||
) |
Adds OrdinalValue to existing value at the specified (GlobalBlockRow, BlockRowOffset, VectorIndex) location.
Sums the given 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.
In | GlobalBlockRow - BlockRow of Multivector to modify in global index space. |
In | BlockRowOffset - Offset into BlockRow of Multivector to modify in global index space. |
In | VectorIndex - Vector within MultiVector that should to modify. |
In | ScalarValue - Value to add to existing value. |
int Epetra_IntMultiVector::SumIntoMyValue | ( | int | MyRow, |
int | VectorIndex, | ||
int | OrdinalValue | ||
) |
Adds OrdinalValue 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
In | MyRow - Row of Multivector to modify in local index space. |
In | VectorIndex - Vector within MultiVector that should to modify. |
In | OrdinalValue - Value to add to existing value. |
int Epetra_IntMultiVector::SumIntoMyValue | ( | int | MyBlockRow, |
int | BlockRowOffset, | ||
int | VectorIndex, | ||
int | OrdinalValue | ||
) |
Adds OrdinalValue 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.
In | MyBlockRow - BlockRow of Multivector to modify in local index space. |
In | BlockRowOffset - Offset into BlockRow of Multivector to modify in local index space. |
In | VectorIndex - Vector within MultiVector that should to modify. |
In | OrdinalValue - Value to add to existing value. |