44 #ifndef EPETRA_INTMULTIVECTOR_H
45 #define EPETRA_INTMULTIVECTOR_H
230 int *
A,
int MyLDA,
int NumVectors);
249 int **ArrayOfPointers,
int NumVectors);
315 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
316 int ReplaceGlobalValue(
int GlobalRow,
int VectorIndex,
int OrdinalValue);
318 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
319 int ReplaceGlobalValue(
long long GlobalRow,
int VectorIndex,
int OrdinalValue);
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
371 int SumIntoGlobalValue(
int GlobalRow,
int VectorIndex,
int OrdinalValue);
373 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
374 int SumIntoGlobalValue(
long long GlobalRow,
int VectorIndex,
int OrdinalValue);
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);
429 int ReplaceMyValue(
int MyRow,
int VectorIndex,
int OrdinalValue);
451 int ReplaceMyValue(
int MyBlockRow,
int BlockRowOffset,
int VectorIndex,
int OrdinalValue);
474 int SumIntoMyValue(
int MyRow,
int VectorIndex,
int OrdinalValue);
496 int SumIntoMyValue(
int MyBlockRow,
int BlockRowOffset,
int VectorIndex,
int OrdinalValue);
505 int PutScalar (
int OrdinalConstant);
527 int ExtractCopy(
int *A,
int MyLDA)
const;
540 int ExtractCopy(
int **ArrayOfPointers)
const;
560 int ExtractView(
int **A,
int *MyLDA)
const;
573 int ExtractView(
int ***ArrayOfPointers)
const;
590 int MinValue (
int * Result)
const;
602 int MaxValue (
int * Result)
const;
626 int*& operator [] (
int i) {
return Pointers_[i]; }
632 int *
const & operator [] (
int i)
const {
return Pointers_[i]; }
657 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
659 if(
Map().GlobalIndicesInt())
660 return (
int) GlobalLength_;
661 throw "Epetra_MultiVector::GlobalLength: GlobalIndices not int.";
682 virtual void Print(std::ostream & os)
const;
708 int ResetView(
int ** ArrayOfPointers);
735 int AllocateForCopy(
void);
739 {
if (OrdinalTemp_==0) OrdinalTemp_=
new int[NumVectors_+1];
return;}
742 for (
int i=0; i<NumVectors_; i++) IntVectors_[i] = 0;}
746 int AllocateForView(
void);
748 template<
typename int_type>
749 int ChangeGlobalValue(int_type GlobalBlockRow,
754 int ChangeMyValue(
int MyBlockRow,
766 int * PermuteFromLIDs,
void UpdateIntVectors() const
int ** Pointers() const
Get pointer to individual vector pointers.
Epetra_Map: A class for partitioning vectors and matrices.
Epetra_Distributor: The Epetra Gather/Scatter Setup Base Class.
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_OffsetIndex: This class builds index for efficient mapping of data from one Epetra_CrsGraph ba...
Epetra_IntVector: A class for constructing and using dense integer vectors on a parallel computer...
int MyLength() const
Returns the local vector length on the calling processor of vectors in the multi-vector.
virtual void Print(std::ostream &os) const
Print method.
Epetra_Export: This class builds an export object for efficient exporting of off-processor elements...
bool ConstantStride() const
Returns true if this multi-vector has constant stride between vectors.
int NumVectors() const
Returns the number of vectors in the multi-vector.
int * Values() const
Get pointer to MultiVector values.
Epetra_IntMultiVector: A class for constructing and using dense multi-vectors, vectors and matrices i...
Epetra_CompObject & operator=(const Epetra_CompObject &src)
Epetra_Import: This class builds an import object for efficient importing of off-processor elements...
virtual int CheckSizes(const Epetra_SrcDistObject &Source)=0
Allows the source and target (this) objects to be compared for compatibility, return nonzero if not...
Epetra_IntVector ** IntVectors_
Epetra_Util: The Epetra Util Wrapper Class.
Epetra_BLAS: The Epetra BLAS Wrapper Class.
Epetra_Comm: The Epetra Communication Abstract Base Class.
Epetra_CompObject: Functionality and data that is common to all computational classes.
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().
Epetra_BlockMap: A class for partitioning block element vectors and matrices.
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)...
void UpdateOrdinalTemp() const
Epetra_SrcDistObject: A class for supporting flexible source distributed objects for import/export op...
long long GlobalLength64() const
Epetra_DistObject: A class for constructing and using dense multi-vectors, vectors and matrices in pa...
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().
const Epetra_BlockMap & Map() const
Returns the address of the Epetra_BlockMap for this multi-vector.