44 #ifndef EPETRA_CRSMATRIX_H 45 #define EPETRA_CRSMATRIX_H 56 #ifdef Epetra_ENABLE_CASK 71 #ifdef EPETRA_CRS_MATRIX_TRACE_DUMP_MULTIPLY 72 extern bool Epetra_CrsMatrixTraceDumpMultiply;
73 #endif // EPETRA_CRS_MATRIX_TRACE_DUMP_MULTIPLY 437 int PutScalar(
double ScalarConstant);
447 int Scale(
double ScalarConstant);
476 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 477 virtual int InsertGlobalValues(
int GlobalRow,
int NumEntries,
const double* Values,
const int* Indices);
479 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 480 virtual int InsertGlobalValues(
long long GlobalRow,
int NumEntries,
const double* Values,
const long long* Indices);
510 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 511 virtual int InsertGlobalValues(
int GlobalRow,
int NumEntries,
double* Values,
int* Indices);
513 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 514 virtual int InsertGlobalValues(
long long GlobalRow,
int NumEntries,
double* Values,
long long* Indices);
530 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 531 virtual int ReplaceGlobalValues(
int GlobalRow,
int NumEntries,
const double* Values,
const int* Indices);
533 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 534 virtual int ReplaceGlobalValues(
long long GlobalRow,
int NumEntries,
const double* Values,
const long long* Indices);
550 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 551 virtual int SumIntoGlobalValues(
int GlobalRow,
int NumEntries,
const double* Values,
const int* Indices);
553 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 554 virtual int SumIntoGlobalValues(
long long GlobalRow,
int NumEntries,
const double* Values,
const long long* Indices);
571 int InsertMyValues(
int MyRow,
int NumEntries,
const double* Values,
const int* Indices);
587 int InsertMyValues(
int MyRow,
int NumEntries,
double* Values,
int* Indices);
602 int ReplaceMyValues(
int MyRow,
int NumEntries,
const double* Values,
const int* Indices);
618 int SumIntoMyValues(
int MyRow,
int NumEntries,
const double* Values,
const int* Indices);
661 int FillComplete(
bool OptimizeDataStorage =
true);
691 int FillComplete(
const Epetra_Map& DomainMap,
const Epetra_Map& RangeMap,
bool OptimizeDataStorage =
true);
714 int OptimizeStorage();
735 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 736 int ExtractGlobalRowCopy(
int GlobalRow,
int Length,
int& NumEntries,
double* Values,
int* Indices)
const;
738 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 739 int ExtractGlobalRowCopy(
long long GlobalRow,
int Length,
int& NumEntries,
double* Values,
long long* Indices)
const;
754 int ExtractMyRowCopy(
int MyRow,
int Length,
int& NumEntries,
double* Values,
int* Indices)
const;
765 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 766 int ExtractGlobalRowCopy(
int GlobalRow,
int Length,
int& NumEntries,
double* Values)
const;
768 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 769 int ExtractGlobalRowCopy(
long long GlobalRow,
int Length,
int& NumEntries,
double* Values)
const;
781 int ExtractMyRowCopy(
int MyRow,
int Length,
int& NumEntries,
double* Values)
const;
805 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 806 int ExtractGlobalRowView(
int GlobalRow,
int& NumEntries,
double*& Values,
int*& Indices)
const;
808 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 809 int ExtractGlobalRowView(
long long GlobalRow,
int& NumEntries,
double*& Values,
long long*& Indices)
const;
824 int ExtractMyRowView(
int MyRow,
int& NumEntries,
double*& Values,
int*& Indices)
const;
834 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 835 int ExtractGlobalRowView(
int GlobalRow,
int& NumEntries,
double*& Values)
const;
837 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 838 int ExtractGlobalRowView(
long long GlobalRow,
int& NumEntries,
double*& Values)
const;
849 int ExtractMyRowView(
int MyRow,
int& NumEntries,
double*& Values)
const;
1007 bool Filled()
const {
return(Graph_.Filled());}
1056 double NormFrobenius()
const;
1065 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1067 if(RowMap().GlobalIndicesInt())
1069 throw "Epetra_CrsMatrix::NumGlobalNonzeros: GlobalIndices not int.";
1075 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1077 if(RowMap().GlobalIndicesInt())
1079 throw "Epetra_CrsMatrix::NumGlobalRows: GlobalIndices not int.";
1085 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1087 if(RowMap().GlobalIndicesInt())
1089 throw "Epetra_CrsMatrix::NumGlobalCols: GlobalIndices not int.";
1095 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1097 if(RowMap().GlobalIndicesInt())
1099 throw "Epetra_CrsMatrix::NumGlobalDiagonals: GlobalIndices not int.";
1148 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1149 int IndexBase()
const {
1151 if(RowMap().GlobalIndicesInt())
1152 return (
int) IndexBase64();
1153 throw "Epetra_CrsMatrix::IndexBase: GlobalIndices not int.";
1256 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1258 int LRID(
int GRID_in)
const {
return(Graph_.LRID(GRID_in));}
1261 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 1262 int LRID(
long long GRID_in)
const {
return(Graph_.LRID(GRID_in));}
1265 #if defined(EPETRA_NO_32BIT_GLOBAL_INDICES) && defined(EPETRA_NO_64BIT_GLOBAL_INDICES) 1268 int LRID(
long long GRID_in)
const {
return(Graph_.LRID(GRID_in));}
1272 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1274 if(RowMap().GlobalIndicesInt())
1275 return (
int) GRID64(LRID_in);
1276 throw "Epetra_CrsMatrix::GRID: GlobalIndices not int.";
1279 long long GRID64(
int LRID_in)
const {
return(Graph_.GRID64(LRID_in));}
1285 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1286 int LCID(
int GCID_in)
const {
return(Graph_.LCID(GCID_in));}
1288 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 1289 int LCID(
long long GCID_in)
const {
return(Graph_.LCID(GCID_in));}
1296 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1298 if(RowMap().GlobalIndicesInt())
1299 return (
int) GCID64(LCID_in);
1300 throw "Epetra_CrsMatrix::GCID: GlobalIndices not int.";
1303 long long GCID64(
int LCID_in)
const {
return(Graph_.GCID64(LCID_in));}
1306 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1307 bool MyGRID(
int GRID_in)
const {
return(Graph_.MyGRID(GRID_in));}
1309 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 1310 bool MyGRID(
long long GRID_in)
const {
return(Graph_.MyGRID(GRID_in));}
1314 bool MyLRID(
int LRID_in)
const {
return(Graph_.MyLRID(LRID_in));}
1320 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1321 bool MyGCID(
int GCID_in)
const {
return(Graph_.MyGCID(GCID_in));}
1323 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 1324 bool MyGCID(
long long GCID_in)
const {
return(Graph_.MyGCID(GCID_in));}
1331 bool MyLCID(
int LCID_in)
const {
return(Graph_.MyLCID(LCID_in));}
1334 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1337 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 1338 bool MyGlobalRow(
long long GID)
const {
return(Graph_.MyGlobalRow(GID));}
1347 virtual void Print(std::ostream& os)
const;
1406 else return(DomainMap());
1413 else return(RangeMap());
1455 inline double* operator[] (
int Loc) {
1456 if (StorageOptimized()){
int * ind = Graph().
IndexOffset();
return(All_Values_+ind[Loc]);}
1457 else return Values_[Loc];}
1458 inline double* operator[] (
int Loc)
const {
1459 if (StorageOptimized()){
int * ind = Graph().
IndexOffset();
return(All_Values_+ind[Loc]);}
1460 else return Values_[Loc];}
1480 if (StorageOptimized()) {
1483 Values_in = All_Values();
1486 else { IndexOffset = 0; Indices = 0; Values_in = 0;
return (-1);} }
1521 int ExpertMakeUniqueCrsGraphData();
1544 int TransformToLocal();
1556 if (StorageOptimized())
throw ReportError(
"This method: double** Values() cannot be called when StorageOptimized()==true", -1);
1557 else return(Values_);}
1559 if (!StorageOptimized())
throw ReportError(
"This method: double* All_Values()cannot be called when StorageOptimized()==false", -1);
1560 else return(All_Values_);}
1562 if (StorageOptimized())
1563 if (Graph().StorageOptimized())
1564 return(All_Values_+Graph().IndexOffset()[LocalRow]);
1565 else throw ReportError(
"This method: double* Values()cannot be called when StorageOptimized()==true and Graph().StorageOptimized()==false", -1);
1566 else return(Values_[LocalRow]);}
1568 void InitializeDefaults();
1571 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 1572 int InsertValues(
int LocalRow,
int NumEntries,
double* Values,
int* Indices);
1573 int InsertValues(
int LocalRow,
int NumEntries,
const double* Values,
const int* Indices);
1575 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 1576 int InsertValues(
int LocalRow,
int NumEntries,
double* Values,
long long* Indices);
1577 int InsertValues(
int LocalRow,
int NumEntries,
const double* Values,
const long long* Indices);
1580 int InsertOffsetValues(
long long GlobalRow,
int NumEntries,
double *Values,
int *Indices);
1581 int InsertOffsetValues(
long long GlobalRow,
int NumEntries,
const double *Values,
const int *Indices);
1582 int ReplaceOffsetValues(
long long GlobalRow,
int NumEntries,
const double *Values,
const int *Indices);
1583 int SumIntoOffsetValues(
long long GlobalRow,
int NumEntries,
const double *Values,
const int *Indices);
1584 void UpdateImportVector(
int NumVectors)
const;
1585 void UpdateExportVector(
int NumVectors)
const;
1586 void GeneralMV(
double * x,
double * y)
const;
1587 void GeneralMTV(
double * x,
double * y)
const;
1588 void GeneralMM(
double ** X,
int LDX,
double ** Y,
int LDY,
int NumVectors)
const;
1589 void GeneralMTM(
double ** X,
int LDX,
double ** Y,
int LDY,
int NumVectors)
const;
1590 void GeneralSV(
bool Upper,
bool Trans,
bool UnitDiagonal,
double * x,
double * y)
const;
1591 void GeneralSM(
bool Upper,
bool Trans,
bool UnitDiagonal,
double ** X,
int LDX,
double ** Y,
int LDY,
int NumVectors)
const;
1601 int* PermuteFromLIDs,
1608 int* PermuteFromLIDs,
1615 int* PermuteFromLIDs,
1643 bool Sorted()
const {
return(Graph_.Sorted());}
1646 int MergeRedundantEntries();
1651 void DeleteMemory();
1675 #ifdef Epetra_ENABLE_CASK 1686 template<
typename int_type>
1687 int TInsertGlobalValues(int_type Row,
int NumEntries,
const double* values,
const int_type* Indices);
1689 template<
typename int_type>
1690 int TInsertGlobalValues(int_type Row,
int NumEntries,
double* values, int_type* Indices);
1692 template<
typename int_type>
1693 int InsertValues(
int Row,
int NumEntries,
const double* values,
const int_type* Indices);
1695 template<
typename int_type>
1696 int InsertValues(
int Row,
int NumEntries,
double* values, int_type* Indices);
1698 template<
typename int_type>
1699 int TReplaceGlobalValues(int_type Row,
int NumEntries,
const double * srcValues,
const int_type *Indices);
1701 template<
typename int_type>
1702 int TSumIntoGlobalValues(int_type Row,
int NumEntries,
const double * srcValues,
const int_type *Indices);
1704 template<
typename int_type>
1705 int ExtractGlobalRowCopy(int_type Row,
int Length,
int & NumEntries,
double * values, int_type * Indices)
const;
1707 template<
typename int_type>
1708 int ExtractGlobalRowCopy(int_type Row,
int Length,
int & NumEntries,
double * values)
const;
1710 template<
typename int_type>
1711 int ExtractGlobalRowView(int_type Row,
int & NumEntries,
double *& values, int_type *& Indices)
const;
1713 template<
typename int_type>
1714 int ExtractGlobalRowView(int_type Row,
int & NumEntries,
double *& values)
const;
1716 template<
typename int_type>
1721 int* PermuteFromLIDs,
1725 template<
typename int_type>
1730 int* PermuteFromLIDs,
1734 template<
typename int_type>
1746 template<
class TransferType>
1748 const TransferType & RowTransfer,
1749 const TransferType* DomainTransfer,
1752 bool RestrictCommunicator);
1760 bool RestrictCommunicator);
1766 bool RestrictCommunicator);
1773 bool RestrictCommunicator);
1780 bool RestrictCommunicator);
bool Sorted() const
If SortEntries() has been called, this query returns true, otherwise it returns false.
const Epetra_Map & RowMap() const
Returns the Epetra_Map object associated with the rows of this matrix.
bool StorageOptimized() const
If OptimizeStorage() has been called, this query returns true, otherwise it returns false...
Epetra_MultiVector: A class for constructing and using dense multi-vectors, vectors and matrices in p...
int GlobalMaxNumEntries() const
Returns the maximum number of nonzero entries across all rows on all processors.
bool MyGRID(int GRID_in) const
Returns true if the GRID passed in belongs to the calling processor in this map, otherwise returns fa...
const Epetra_BlockMap & Map() const
Returns the address of the Epetra_BlockMap for this multi-vector.
int MaxNumEntries() const
Returns the maximum number of nonzero entries across all rows on this processor.
bool UseTranspose() const
Returns the current UseTranspose setting.
Epetra_Map: A class for partitioning vectors and matrices.
virtual long long NumGlobalDiagonals64() const =0
Epetra_IntSerialDenseVector: A class for constructing and using dense vectors.
virtual int RightScale(const Epetra_Vector &x)=0
Scales the Epetra_RowMatrix on the right with a Epetra_Vector x.
const Epetra_CrsGraph & Graph() const
Returns a reference to the Epetra_CrsGraph object associated with this matrix.
virtual double NormOne() const =0
Returns the one norm of the global matrix.
int ExtractCrsDataPointers(int *&IndexOffset, int *&Indices, double *&Values_in) const
Returns internal data pointers associated with Crs matrix format.
long long NumGlobalNonzeros64() const
int Multiply(bool TransA, const Epetra_Vector &x, Epetra_Vector &y) const
Returns the result of a Epetra_CrsMatrix multiplied by a Epetra_Vector x in y.
int NumMyDiagonals() const
Returns the number of local nonzero diagonal entries, based on global row/column index comparisons...
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.
int * Values_alloc_lengths_
virtual void Print(std::ostream &os) const
Print method.
long long NumGlobalRows64() const
Epetra_OffsetIndex: This class builds index for efficient mapping of data from one Epetra_CrsGraph ba...
int LRID(int GRID_in) const
Returns the local row index for given global row index, returns -1 if no local row for this global ro...
int NumMyRows() const
Returns the number of matrix rows owned by the calling processor.
bool HaveColMap() const
Returns true if we have a well-defined ColMap, and returns false otherwise.
bool MyGCID(int GCID_in) const
Returns true if the GCID passed in belongs to the calling processor in this map, otherwise returns fa...
int NumMyCols() const
Returns the number of entries in the set of column-indices that appear on this processor.
bool MyGlobalRow(long long GID) const
double * All_Values() const
bool HasNormInf() const
Returns true because this class can compute an Inf-norm.
#define EPETRA_CHK_ERR(a)
int LCID(int GCID_in) const
Returns the local column index for given global column index, returns -1 if no local column for this ...
int NumMyEntries(int Row) const
Returns the current number of nonzero entries in specified local row on this processor.
bool constructedWithFilledGraph_
bool MyGlobalRow(int GID) const
Returns true of GID is owned by the calling processor, otherwise it returns false.
Epetra_Export: This class builds an export object for efficient exporting of off-processor elements...
long long NumGlobalDiagonals64() const
int LRID(long long GRID_in) const
int NumGlobalCols() const
Returns the number of global matrix columns.
Epetra_Vector: A class for constructing and using dense vectors on a parallel computer.
virtual int ExtractDiagonalCopy(Epetra_Vector &Diagonal) const =0
Returns a copy of the main diagonal in a user-provided vector.
bool MyLCID(int LCID_in) const
Returns true if the LRID passed in belongs to the calling processor in this map, otherwise returns fa...
virtual int LeftScale(const Epetra_Vector &x)=0
Scales the Epetra_RowMatrix on the left with a Epetra_Vector x.
bool IndicesAreLocal() const
If matrix indices has been transformed to local, this query returns true, otherwise it returns false...
const Epetra_Comm & Comm() const
Returns a pointer to the Epetra_Comm communicator associated with this matrix.
Epetra_CompObject & operator=(const Epetra_CompObject &src)
virtual int ReportError(const std::string Message, int ErrorCode) const
Error reporting method.
Epetra_Import: This class builds an import object for efficient importing of off-processor elements...
virtual int InvRowSums(Epetra_Vector &x) const =0
Computes the sum of absolute values of the rows of the Epetra_RowMatrix, results returned in x...
const Epetra_Map & RowMatrixRowMap() const
Returns the Epetra_Map object associated with the rows of this matrix.
const Epetra_Map & OperatorDomainMap() const
Returns the Epetra_Map object associated with the domain of this matrix operator. ...
virtual int CheckSizes(const Epetra_SrcDistObject &Source)=0
Allows the source and target (this) objects to be compared for compatibility, return nonzero if not...
bool squareFillCompleteCalled_
const Epetra_Map & RangeMap() const
Returns the Epetra_Map object associated with the range of this matrix operator.
const Epetra_Export * Exporter() const
Returns the Epetra_Export object that contains the export operations for distributed operations...
int MakeDataContiguous()
Eliminates memory that is used for construction. Make consecutive row index sections contiguous...
int NumAllocatedGlobalEntries(int Row) const
Returns the allocated number of nonzero entries in specified global row on this processor.
const Epetra_Comm & Comm() const
Returns the address of the Epetra_Comm for this multi-vector.
int * IndexOffset() const
bool StaticGraph()
Returns true if the graph associated with this matrix was pre-constructed and therefore not changeabl...
bool IndicesAreContiguous() const
If matrix indices are packed into single array (done in OptimizeStorage()) return true...
const Epetra_Import * RowMatrixImporter() const
Returns the Epetra_Import object that contains the import operations for distributed operations...
Epetra_BLAS: The Epetra BLAS Wrapper Class.
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const =0
Returns the number of nonzero entries in MyRow.
const Epetra_Map & ImportMap() const
Use ColMap() instead.
Epetra_MultiVector * ExportVector_
Epetra_Comm: The Epetra Communication Abstract Base Class.
virtual bool UseTranspose() const =0
Returns the current UseTranspose setting.
int GRID(int LRID_in) const
Returns the global row index for give local row index, returns IndexBase-1 if we don't have this loca...
int * All_Indices() const
int NumGlobalEntries(long long Row) const
Returns the current number of nonzero entries in specified global row on this processor.
Epetra_CompObject: Functionality and data that is common to all computational classes.
virtual double NormInf() const =0
Returns the infinity norm of the global matrix.
void SetStaticGraph(bool Flag)
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 NumAllocatedMyEntries(int Row) const
Returns the allocated number of nonzero entries in specified local row on this processor.
long long GRID64(int LRID_in) const
const Epetra_Map & OperatorRangeMap() const
Returns the Epetra_Map object associated with the range of this matrix operator.
int GCID(int LCID_in) const
Returns the global column index for give local column index, returns IndexBase-1 if we don't have thi...
virtual long long NumGlobalCols64() const =0
bool MyGCID(long long GCID_in) const
bool LowerTriangular() const
If matrix is lower triangular in local index space, this query returns true, otherwise it returns fal...
bool Filled() const
If FillComplete() has been called, this query returns true, otherwise it returns false.
const Epetra_Map & ColMap() const
Returns the Epetra_Map object that describes the set of column-indices that appear in each processor'...
const Epetra_Map & RowMatrixColMap() const
Returns the Epetra_Map object associated with columns of this matrix.
int LCID(long long GCID_in) const
virtual long long NumGlobalNonzeros64() const =0
bool matrixFillCompleteCalled_
int SetAllocated(bool Flag)
virtual int Multiply(bool TransA, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const =0
Returns the result of a Epetra_RowMatrix multiplied by a Epetra_MultiVector X in Y.
long long NumGlobalCols64() const
int NumGlobalDiagonals() const
Returns the number of global nonzero diagonal entries, based on global row/column index comparisons...
int NumMyNonzeros() const
Returns the number of nonzero entries in the calling processor's portion of the matrix.
bool MyGRID(long long GRID_in) const
double * Values(int LocalRow) const
virtual const char * Label() const
Epetra_Object Label access funtion.
bool MyLRID(int LRID_in) const
Returns true if the LRID passed in belongs to the calling processor in this map, otherwise returns fa...
bool IndicesAreGlobal() const
If matrix indices has not been transformed to local, this query returns true, otherwise it returns fa...
int SetUseTranspose(bool UseTranspose_in)
If set true, transpose of this operator will be applied.
int SortGhostsAssociatedWithEachProcessor(bool Flag)
Forces FillComplete() to locally order ghostnodes associated with each remote processor in ascending ...
bool UpperTriangular() const
If matrix is upper triangular in local index space, this query returns true, otherwise it returns fal...
bool NoDiagonal() const
If matrix has no diagonal entries in global index space, this query returns true, otherwise it return...
int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Returns the result of a Epetra_Operator inverse applied to an Epetra_MultiVector X in Y...
Epetra_CrsMatrix: A class for constructing and using real-valued double-precision sparse compressed r...
virtual bool UpperTriangular() const =0
If matrix is upper triangular in local index space, this query returns true, otherwise it returns fal...
virtual int ExtractMyRowCopy(int MyRow, int Length, int &NumEntries, double *Values, int *Indices) const =0
Returns a copy of the specified local row in user-provided arrays.
virtual int InvColSums(Epetra_Vector &x) const =0
Computes the sum of absolute values of the columns of the Epetra_RowMatrix, results returned in x...
int NumGlobalRows() const
Returns the number of global matrix rows.
Epetra_SrcDistObject: A class for supporting flexible source distributed objects for import/export op...
const Epetra_Import * Importer() const
Returns the Epetra_Import object that contains the import operations for distributed operations...
Epetra_RowMatrix: A pure virtual class for using real-valued double-precision row matrices...
long long GCID64(int LCID_in) const
int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Returns the result of a Epetra_Operator applied to a Epetra_MultiVector X in Y.
virtual int Solve(bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector &X, Epetra_MultiVector &Y) const =0
Returns result of a local-only solve using a triangular Epetra_RowMatrix with Epetra_MultiVectors X a...
Epetra_MultiVector * ImportVector_
int NumGlobalNonzeros() const
Returns the number of nonzero entries in the global matrix.
long long IndexBase64() const
const char * Label() const
Returns a character string describing the operator.
const Epetra_BlockMap & Map() const
Map() method inherited from Epetra_DistObject.
double *& ExpertExtractValues()
Returns a reference to the double* used to hold the values array.
virtual long long NumGlobalRows64() const =0
bool NoRedundancies() const
If MergeRedundantEntries() has been called, this query returns true, otherwise it returns false...
Epetra_CrsGraph: A class for constructing and using sparse compressed row graphs. ...
const Epetra_Map & DomainMap() const
Returns the Epetra_Map object associated with the domain of this matrix operator. ...
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().