44#ifndef EPETRA_INTMULTIVECTOR_H
45#define EPETRA_INTMULTIVECTOR_H
315#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
318#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
342#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
343 int ReplaceGlobalValue(
int GlobalBlockRow,
int BlockRowOffset,
int VectorIndex,
int OrdinalValue);
345#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
346 int ReplaceGlobalValue(
long long GlobalBlockRow,
int BlockRowOffset,
int VectorIndex,
int OrdinalValue);
370#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
373#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
397#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
398 int SumIntoGlobalValue(
int GlobalBlockRow,
int BlockRowOffset,
int VectorIndex,
int OrdinalValue);
400#ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
401 int SumIntoGlobalValue(
long long GlobalBlockRow,
int BlockRowOffset,
int VectorIndex,
int OrdinalValue);
451 int ReplaceMyValue(
int MyBlockRow,
int BlockRowOffset,
int VectorIndex,
int OrdinalValue);
496 int SumIntoMyValue(
int MyBlockRow,
int BlockRowOffset,
int VectorIndex,
int OrdinalValue);
632 int *
const & operator [] (
int i)
const {
return Pointers_[i]; }
657#ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
659 if(
Map().GlobalIndicesInt())
661 throw "Epetra_MultiVector::GlobalLength: GlobalIndices not int.";
682 virtual void Print(std::ostream & os)
const;
708 int ResetView(
int ** ArrayOfPointers);
748 int AllocateForView(
void);
750 template<
typename int_type>
751 int ChangeGlobalValue(int_type GlobalBlockRow,
756 int ChangeMyValue(
int MyBlockRow,
768 int * PermuteFromLIDs,
Epetra_BLAS(void)
Epetra_BLAS Constructor.
Epetra_BlockMap: A class for partitioning block element vectors and matrices.
Epetra_Comm: The Epetra Communication Abstract Base Class.
Epetra_CompObject()
Basic Epetra_CompObject constuctor.
const Epetra_BlockMap & Map() const
Returns the address of the Epetra_BlockMap for this multi-vector.
virtual int CheckSizes(const Epetra_SrcDistObject &Source)=0
Allows the source and target (this) objects to be compared for compatibility, return nonzero if not.
virtual int UnpackAndCombine(const Epetra_SrcDistObject &Source, int NumImportIDs, int *ImportLIDs, int LenImports, char *Imports, int &SizeOfPacket, Epetra_Distributor &Distor, Epetra_CombineMode CombineMode, const Epetra_OffsetIndex *Indexor)=0
Perform any unpacking and combining after call to DoTransfer().
virtual int PackAndPrepare(const Epetra_SrcDistObject &Source, int NumExportIDs, int *ExportLIDs, int &LenExports, char *&Exports, int &SizeOfPacket, int *Sizes, bool &VarSizes, Epetra_Distributor &Distor)=0
Perform any packing or preparation required for call to DoTransfer().
virtual int CopyAndPermute(const Epetra_SrcDistObject &Source, int NumSameIDs, int NumPermuteIDs, int *PermuteToLIDs, int *PermuteFromLIDs, const Epetra_OffsetIndex *Indexor, Epetra_CombineMode CombineMode=Zero)=0
Perform ID copies and permutations that are on processor.
Epetra_DistObject & operator=(const Epetra_DistObject &src)
Epetra_DistObject(const Epetra_BlockMap &Map)
Basic Epetra_DistObject constuctor.
virtual void Print(std::ostream &os) const
Print method.
Epetra_Distributor: The Epetra Gather/Scatter Setup Base Class.
Epetra_Export: This class builds an export object for efficient exporting of off-processor elements.
Epetra_Import: This class builds an import object for efficient importing of off-processor elements.
Epetra_IntMultiVector: A class for constructing and using dense multi-vectors, vectors and matrices i...
int MaxValue(int *Result) const
Compute maximum value of each vector in multi-vector.
int MinValue(int *Result) const
Compute minimum value of each vector in multi-vector.
int ReplaceMyValue(int MyRow, int VectorIndex, int OrdinalValue)
Replace current value at the specified (MyRow, VectorIndex) location with OrdinalValue.
long long GlobalLength64() const
void UpdateOrdinalTemp() const
int AllocateForCopy(void)
int ExtractCopy(int *A, int MyLDA) const
Put multi-vector values into user-provided two-dimensional array.
int SumIntoGlobalValue(int GlobalRow, int VectorIndex, int OrdinalValue)
Adds OrdinalValue to existing value at the specified (GlobalRow, VectorIndex) location.
int MyLength() const
Returns the local vector length on the calling processor of vectors in the multi-vector.
int PutScalar(int OrdinalConstant)
Initialize all values in a multi-vector with constant value.
int ExtractView(int **A, int *MyLDA) const
Set user-provided addresses of A and MyLDA.
void UpdateIntVectors() const
int SumIntoMyValue(int MyRow, int VectorIndex, int OrdinalValue)
Adds OrdinalValue to existing value at the specified (MyRow, VectorIndex) location.
int NumVectors() const
Returns the number of vectors in the multi-vector.
Epetra_IntMultiVector(const Epetra_BlockMap &Map, int NumVectors, bool zeroOut=true)
Basic Epetra_IntMultiVector constuctor.
int * Values() const
Get pointer to MultiVector values.
bool ConstantStride() const
Returns true if this multi-vector has constant stride between vectors.
int GlobalLength() const
Returns the global vector length of vectors in the multi-vector.
int ReplaceGlobalValue(int GlobalRow, int VectorIndex, int OrdinalValue)
Replace current value at the specified (GlobalRow, VectorIndex) location with OrdinalValue.
Epetra_IntVector ** IntVectors_
int Stride() const
Returns the stride between vectors in the multi-vector (only meaningful if ConstantStride() is true).
int ** Pointers() const
Get pointer to individual vector pointers.
Epetra_IntVector: A class for constructing and using dense integer vectors on a parallel computer.
Epetra_Map: A class for partitioning vectors and matrices.
Epetra_OffsetIndex: This class builds index for efficient mapping of data from one Epetra_CrsGraph ba...
Epetra_SrcDistObject: A class for supporting flexible source distributed objects for import/export op...
Epetra_Util: The Epetra Util Wrapper Class.