44 #ifndef EPETRA_CRSMATRIX_H 
   45 #define EPETRA_CRSMATRIX_H 
   47 #if defined(Epetra_SHOW_DEPRECATED_WARNINGS) 
   49 #warning "The Epetra package is deprecated" 
   64 #ifdef Epetra_ENABLE_CASK 
   79 #ifdef EPETRA_CRS_MATRIX_TRACE_DUMP_MULTIPLY 
   80 extern bool Epetra_CrsMatrixTraceDumpMultiply;
 
   81 #endif // EPETRA_CRS_MATRIX_TRACE_DUMP_MULTIPLY 
  445   int PutScalar(
double ScalarConstant);
 
  455   int Scale(
double ScalarConstant);
 
  484 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
  485   virtual int InsertGlobalValues(
int GlobalRow, 
int NumEntries, 
const double* Values, 
const int* Indices);
 
  487 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
  488   virtual int InsertGlobalValues(
long long GlobalRow, 
int NumEntries, 
const double* Values, 
const long long* Indices);
 
  518 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
  519   virtual int InsertGlobalValues(
int GlobalRow, 
int NumEntries, 
double* Values, 
int* Indices);
 
  521 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
  522   virtual int InsertGlobalValues(
long long GlobalRow, 
int NumEntries, 
double* Values, 
long long* Indices);
 
  538 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
  539   virtual int ReplaceGlobalValues(
int GlobalRow, 
int NumEntries, 
const double* Values, 
const int* Indices);
 
  541 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
  542   virtual int ReplaceGlobalValues(
long long GlobalRow, 
int NumEntries, 
const double* Values, 
const long long* Indices);
 
  558 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
  559   virtual int SumIntoGlobalValues(
int GlobalRow, 
int NumEntries, 
const double* Values, 
const int* Indices);
 
  561 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
  562   virtual int SumIntoGlobalValues(
long long GlobalRow, 
int NumEntries, 
const double* Values, 
const long long* Indices);
 
  579   int InsertMyValues(
int MyRow, 
int NumEntries, 
const double* Values, 
const int* Indices);
 
  595   int InsertMyValues(
int MyRow, 
int NumEntries, 
double* Values, 
int* Indices);
 
  610   int ReplaceMyValues(
int MyRow, 
int NumEntries, 
const double* Values, 
const int* Indices);
 
  626   int SumIntoMyValues(
int MyRow, 
int NumEntries, 
const double* Values, 
const int* Indices);
 
  669   int FillComplete(
bool OptimizeDataStorage = 
true);
 
  699   int FillComplete(
const Epetra_Map& DomainMap, 
const Epetra_Map& RangeMap, 
bool OptimizeDataStorage = 
true);
 
  722   int OptimizeStorage();
 
  743 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
  744   int ExtractGlobalRowCopy(
int GlobalRow, 
int Length, 
int& NumEntries, 
double* Values, 
int* Indices) 
const;
 
  746 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
  747   int ExtractGlobalRowCopy(
long long GlobalRow, 
int Length, 
int& NumEntries, 
double* Values, 
long long* Indices) 
const;
 
  762   int ExtractMyRowCopy(
int MyRow, 
int Length, 
int& NumEntries, 
double* Values, 
int* Indices) 
const;
 
  773 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
  774   int ExtractGlobalRowCopy(
int GlobalRow, 
int Length, 
int& NumEntries, 
double* Values) 
const;
 
  776 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
  777   int ExtractGlobalRowCopy(
long long GlobalRow, 
int Length, 
int& NumEntries, 
double* Values) 
const;
 
  789   int ExtractMyRowCopy(
int MyRow, 
int Length, 
int& NumEntries, 
double* Values) 
const;
 
  813 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
  814   int ExtractGlobalRowView(
int GlobalRow, 
int& NumEntries, 
double*& Values, 
int*& Indices) 
const;
 
  816 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
  817   int ExtractGlobalRowView(
long long GlobalRow, 
int& NumEntries, 
double*& Values, 
long long*& Indices) 
const;
 
  832   int ExtractMyRowView(
int MyRow, 
int& NumEntries, 
double*& Values, 
int*& Indices) 
const;
 
  842 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
  843   int ExtractGlobalRowView(
int GlobalRow, 
int& NumEntries, 
double*& Values) 
const;
 
  845 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
  846   int ExtractGlobalRowView(
long long GlobalRow, 
int& NumEntries, 
double*& Values) 
const;
 
  857   int ExtractMyRowView(
int MyRow, 
int& NumEntries, 
double*& Values) 
const;
 
 1015   bool Filled()
 const {
return(Graph_.Filled());}
 
 1064   double NormFrobenius() 
const;
 
 1073 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1075       if(RowMap().GlobalIndicesInt())
 
 1077       throw "Epetra_CrsMatrix::NumGlobalNonzeros: GlobalIndices not int.";
 
 1083 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1085       if(RowMap().GlobalIndicesInt())
 
 1087       throw "Epetra_CrsMatrix::NumGlobalRows: GlobalIndices not int.";
 
 1093 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1095       if(RowMap().GlobalIndicesInt())
 
 1097       throw "Epetra_CrsMatrix::NumGlobalCols: GlobalIndices not int.";
 
 1103 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1105       if(RowMap().GlobalIndicesInt())
 
 1107       throw "Epetra_CrsMatrix::NumGlobalDiagonals: GlobalIndices not int.";
 
 1156 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1157   int  IndexBase()
 const {
 
 1159     if(RowMap().GlobalIndicesInt())
 
 1160       return (
int) IndexBase64();
 
 1161     throw "Epetra_CrsMatrix::IndexBase: GlobalIndices not int.";
 
 1264 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1266   int LRID( 
int GRID_in)
 const {
return(Graph_.LRID(GRID_in));}
 
 1269 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
 1270   int LRID( 
long long GRID_in)
 const {
return(Graph_.LRID(GRID_in));}
 
 1273 #if defined(EPETRA_NO_32BIT_GLOBAL_INDICES) && defined(EPETRA_NO_64BIT_GLOBAL_INDICES) 
 1276   int LRID(
long long GRID_in)
 const {
return(Graph_.LRID(GRID_in));}
 
 1280 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1282       if(RowMap().GlobalIndicesInt())
 
 1283         return (
int) GRID64(LRID_in);
 
 1284       throw "Epetra_CrsMatrix::GRID: GlobalIndices not int.";
 
 1287   long long GRID64( 
int LRID_in)
 const {
return(Graph_.GRID64(LRID_in));}
 
 1293 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1294   int LCID( 
int GCID_in)
 const {
return(Graph_.LCID(GCID_in));}
 
 1296 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
 1297   int LCID( 
long long GCID_in)
 const {
return(Graph_.LCID(GCID_in));}
 
 1304 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1306       if(RowMap().GlobalIndicesInt())
 
 1307         return (
int) GCID64(LCID_in);
 
 1308       throw "Epetra_CrsMatrix::GCID: GlobalIndices not int.";
 
 1311   long long GCID64( 
int LCID_in)
 const {
return(Graph_.GCID64(LCID_in));}
 
 1314 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1315   bool MyGRID(
int GRID_in)
 const {
return(Graph_.MyGRID(GRID_in));}
 
 1317 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
 1318   bool MyGRID(
long long GRID_in)
 const {
return(Graph_.MyGRID(GRID_in));}
 
 1322   bool MyLRID(
int LRID_in)
 const {
return(Graph_.MyLRID(LRID_in));}
 
 1328 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1329   bool MyGCID(
int GCID_in)
 const {
return(Graph_.MyGCID(GCID_in));}
 
 1331 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
 1332   bool MyGCID(
long long GCID_in)
 const {
return(Graph_.MyGCID(GCID_in));}
 
 1339   bool MyLCID(
int LCID_in)
 const {
return(Graph_.MyLCID(LCID_in));}
 
 1342 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1345 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
 1346   bool MyGlobalRow(
long long GID)
 const {
return(Graph_.MyGlobalRow(GID));}
 
 1355   virtual void Print(std::ostream& os) 
const;
 
 1414           else return(DomainMap());
 
 1421           else return(RangeMap());
 
 1463   inline double* operator[] (
int Loc) {
 
 1464     if (StorageOptimized()){ 
int * ind = Graph().
IndexOffset(); 
return(All_Values_+ind[Loc]);}
 
 1465     else return Values_[Loc];}
 
 1466   inline double* operator[] (
int Loc)
 const {
 
 1467     if (StorageOptimized()){ 
int * ind = Graph().
IndexOffset(); 
return(All_Values_+ind[Loc]);}
 
 1468     else return Values_[Loc];}
 
 1488     if (StorageOptimized()) {
 
 1491       Values_in  = All_Values();
 
 1494     else { IndexOffset = 0; Indices = 0; Values_in  = 0; 
return (-1);} }
 
 1529     int ExpertMakeUniqueCrsGraphData();
 
 1552   int TransformToLocal();
 
 1564     if (StorageOptimized()) 
throw ReportError(
"This method: double** Values() cannot be called when StorageOptimized()==true", -1);
 
 1565     else return(Values_);}
 
 1567     if (!StorageOptimized()) 
throw ReportError(
"This method: double* All_Values()cannot be called when StorageOptimized()==false", -1);
 
 1568     else return(All_Values_);}
 
 1570     if (StorageOptimized())
 
 1571       if (Graph().StorageOptimized())
 
 1572   return(All_Values_+Graph().IndexOffset()[LocalRow]);
 
 1573       else throw ReportError(
"This method: double* Values()cannot be called when StorageOptimized()==true and Graph().StorageOptimized()==false", -1);
 
 1574     else return(Values_[LocalRow]);}
 
 1576   void InitializeDefaults();
 
 1579 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES 
 1580   int InsertValues(
int LocalRow, 
int NumEntries, 
double* Values, 
int* Indices);
 
 1581   int InsertValues(
int LocalRow, 
int NumEntries, 
const double* Values, 
const int* Indices);
 
 1583 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES 
 1584   int InsertValues(
int LocalRow, 
int NumEntries, 
double* Values, 
long long* Indices);
 
 1585   int InsertValues(
int LocalRow, 
int NumEntries, 
const double* Values, 
const long long* Indices);
 
 1588   int InsertOffsetValues(
long long GlobalRow, 
int NumEntries, 
double *Values, 
int *Indices);
 
 1589   int InsertOffsetValues(
long long GlobalRow, 
int NumEntries, 
const double *Values, 
const int *Indices);
 
 1590   int ReplaceOffsetValues(
long long GlobalRow, 
int NumEntries, 
const double *Values, 
const int *Indices);
 
 1591   int SumIntoOffsetValues(
long long GlobalRow, 
int NumEntries, 
const double *Values, 
const int *Indices);
 
 1592   void UpdateImportVector(
int NumVectors) 
const;
 
 1593   void UpdateExportVector(
int NumVectors) 
const;
 
 1594   void GeneralMV(
double * x, 
double * y) 
const;
 
 1595   void GeneralMTV(
double * x, 
double * y) 
const;
 
 1596   void GeneralMM(
double ** X, 
int LDX, 
double ** Y, 
int LDY, 
int NumVectors) 
const;
 
 1597   void GeneralMTM(
double ** X, 
int LDX, 
double ** Y, 
int LDY, 
int NumVectors) 
const;
 
 1598   void GeneralSV(
bool Upper, 
bool Trans, 
bool UnitDiagonal, 
double * x, 
double * y) 
const;
 
 1599   void GeneralSM(
bool Upper, 
bool Trans, 
bool UnitDiagonal, 
double ** X, 
int LDX, 
double ** Y, 
int LDY, 
int NumVectors) 
const;
 
 1609                      int* PermuteFromLIDs,
 
 1616                               int* PermuteFromLIDs,
 
 1623                               int* PermuteFromLIDs,
 
 1651   bool Sorted()
 const {
return(Graph_.Sorted());}
 
 1654   int MergeRedundantEntries();
 
 1659   void DeleteMemory();
 
 1683 #ifdef Epetra_ENABLE_CASK 
 1694   template<
typename int_type>
 
 1695   int TInsertGlobalValues(int_type Row, 
int NumEntries, 
const double* values, 
const int_type* Indices);
 
 1697   template<
typename int_type>
 
 1698   int TInsertGlobalValues(int_type Row, 
int NumEntries, 
double* values, int_type* Indices);
 
 1700   template<
typename int_type>
 
 1701   int InsertValues(
int Row, 
int NumEntries, 
const double* values, 
const int_type* Indices);
 
 1703   template<
typename int_type>
 
 1704   int InsertValues(
int Row, 
int NumEntries, 
double* values, int_type* Indices);
 
 1706   template<
typename int_type>
 
 1707   int TReplaceGlobalValues(int_type Row, 
int NumEntries, 
const double * srcValues, 
const int_type *Indices);
 
 1709   template<
typename int_type>
 
 1710   int TSumIntoGlobalValues(int_type Row, 
int NumEntries, 
const double * srcValues, 
const int_type *Indices);
 
 1712   template<
typename int_type>
 
 1713   int ExtractGlobalRowCopy(int_type Row, 
int Length, 
int & NumEntries, 
double * values, int_type * Indices) 
const;
 
 1715   template<
typename int_type>
 
 1716   int ExtractGlobalRowCopy(int_type Row, 
int Length, 
int & NumEntries, 
double * values) 
const;
 
 1718   template<
typename int_type>
 
 1719   int ExtractGlobalRowView(int_type Row, 
int & NumEntries, 
double *& values, int_type *& Indices) 
const;
 
 1721   template<
typename int_type>
 
 1722   int ExtractGlobalRowView(int_type Row, 
int & NumEntries, 
double *& values) 
const;
 
 1724   template<
typename int_type>
 
 1729                               int* PermuteFromLIDs,
 
 1733   template<
typename int_type>
 
 1738                               int* PermuteFromLIDs,
 
 1742   template<
typename int_type>
 
 1754   template<
class TransferType>
 
 1756           const TransferType & RowTransfer,
 
 1757           const TransferType* DomainTransfer,
 
 1760           bool RestrictCommunicator);
 
 1768         bool RestrictCommunicator);
 
 1774         bool RestrictCommunicator);
 
 1781         bool RestrictCommunicator);
 
 1788         bool RestrictCommunicator);
 
Epetra_MultiVector: A class for constructing and using dense multi-vectors, vectors and matrices in p...
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...
bool MyGlobalRow(int GID) const 
Returns true of GID is owned by the calling processor, otherwise it returns false. 
bool MyGRID(int GRID_in) const 
Returns true if the GRID passed in belongs to the calling processor in this map, otherwise returns fa...
Epetra_Map: A class for partitioning vectors and matrices. 
int NumGlobalEntries(long long Row) const 
Returns the current number of nonzero entries in specified global row on this processor. 
virtual long long NumGlobalDiagonals64() const =0
const Epetra_Import * RowMatrixImporter() const 
Returns the Epetra_Import object that contains the import operations for distributed operations...
const Epetra_Map & RangeMap() const 
Returns the Epetra_Map object associated with the range of this matrix operator. 
Epetra_IntSerialDenseVector: A class for constructing and using dense vectors. 
bool HasNormInf() const 
Returns true because this class can compute an Inf-norm. 
virtual int RightScale(const Epetra_Vector &x)=0
Scales the Epetra_RowMatrix on the right with a Epetra_Vector x. 
bool StorageOptimized() const 
If OptimizeStorage() has been called, this query returns true, otherwise it returns false...
long long IndexBase64() const 
int NumAllocatedGlobalEntries(int Row) const 
Returns the allocated number of nonzero entries in specified global row on this processor. 
long long NumGlobalRows64() const 
virtual double NormOne() const =0
Returns the one norm of the global matrix. 
int NumMyEntries(int Row) const 
Returns the current number of nonzero entries in specified local row on this processor. 
const Epetra_Comm & Comm() const 
Returns the address of the Epetra_Comm for this multi-vector. 
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_
Epetra_OffsetIndex: This class builds index for efficient mapping of data from one Epetra_CrsGraph ba...
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 * IndexOffset() const 
bool UseTranspose() const 
Returns the current UseTranspose setting. 
double * All_Values() const 
long long NumGlobalCols64() const 
virtual void Print(std::ostream &os) const 
Print method. 
int NumGlobalRows() const 
Returns the number of global matrix rows. 
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. 
long long GRID64(int LRID_in) const 
int NumGlobalDiagonals() const 
Returns the number of global nonzero diagonal entries, based on global row/column index comparisons...
const Epetra_Map & RowMatrixRowMap() const 
Returns the Epetra_Map object associated with the rows of this matrix. 
#define EPETRA_CHK_ERR(a)
bool NoRedundancies() const 
If MergeRedundantEntries() has been called, this query returns true, otherwise it returns false...
int NumMyDiagonals() const 
Returns the number of local nonzero diagonal entries, based on global row/column index comparisons...
bool constructedWithFilledGraph_
Epetra_Export: This class builds an export object for efficient exporting of off-processor elements...
const Epetra_Map & ImportMap() const 
Use ColMap() instead. 
bool HaveColMap() const 
Returns true if we have a well-defined ColMap, and returns false otherwise. 
bool Sorted() const 
If SortEntries() has been called, this query returns true, otherwise it returns false. 
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. 
virtual int LeftScale(const Epetra_Vector &x)=0
Scales the Epetra_RowMatrix on the left with a Epetra_Vector x. 
Epetra_CompObject & operator=(const Epetra_CompObject &src)
const Epetra_Map & ColMap() const 
Returns the Epetra_Map object that describes the set of column-indices that appear in each processor'...
Epetra_Import: This class builds an import object for efficient importing of off-processor elements...
bool IndicesAreLocal() const 
If matrix indices has been transformed to local, this query returns true, otherwise it returns false...
const Epetra_Map & OperatorDomainMap() const 
Returns the Epetra_Map object associated with the domain of this matrix operator. ...
bool UpperTriangular() const 
If matrix is upper triangular in local index space, this query returns true, otherwise it returns fal...
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...
bool MyLCID(int LCID_in) const 
Returns true if the LRID passed in belongs to the calling processor in this map, otherwise returns fa...
bool MyGCID(long long GCID_in) const 
int GlobalMaxNumEntries() const 
Returns the maximum number of nonzero entries across all rows on all processors. 
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_
int MakeDataContiguous()
Eliminates memory that is used for construction. Make consecutive row index sections contiguous...
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 StaticGraph()
Returns true if the graph associated with this matrix was pre-constructed and therefore not changeabl...
int LRID(long long GRID_in) const 
long long NumGlobalNonzeros64() const 
Epetra_BLAS: The Epetra BLAS Wrapper Class. 
const Epetra_Map & RowMap() const 
Returns the Epetra_Map object associated with the rows of this matrix. 
virtual int NumMyRowEntries(int MyRow, int &NumEntries) const =0
Returns the number of nonzero entries in MyRow. 
int NumMyCols() const 
Returns the number of entries in the set of column-indices that appear on this processor. 
virtual const char * Label() const 
Epetra_Object Label access funtion. 
Epetra_MultiVector * ExportVector_
Epetra_Comm: The Epetra Communication Abstract Base Class. 
virtual bool UseTranspose() const =0
Returns the current UseTranspose setting. 
const Epetra_Import * Importer() const 
Returns the Epetra_Import object that contains the import operations for distributed operations...
int MaxNumEntries() const 
Returns the maximum number of nonzero entries across all rows on this processor. 
double * Values(int LocalRow) const 
int LCID(long long GCID_in) const 
bool NoDiagonal() const 
If matrix has no diagonal entries in global index space, this query returns true, otherwise it return...
const char * Label() const 
Returns a character string describing the operator. 
bool MyGCID(int GCID_in) const 
Returns true if the GCID passed in belongs to the calling processor in this map, otherwise returns fa...
Epetra_CompObject: Functionality and data that is common to all computational classes. 
int NumMyRows() const 
Returns the number of matrix rows owned by the calling processor. 
virtual double NormInf() const =0
Returns the infinity norm of the global matrix. 
void SetStaticGraph(bool Flag)
int LCID(int GCID_in) const 
Returns the local column index for given global column index, returns -1 if no local column for this ...
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. 
bool MyGlobalRow(long long GID) const 
bool IndicesAreContiguous() const 
If matrix indices are packed into single array (done in OptimizeStorage()) return true...
bool LowerTriangular() const 
If matrix is lower triangular in local index space, this query returns true, otherwise it returns fal...
const Epetra_Export * Exporter() const 
Returns the Epetra_Export object that contains the export operations for distributed operations...
int NumGlobalNonzeros() const 
Returns the number of nonzero entries in the global matrix. 
bool MyGRID(long long GRID_in) const 
int NumGlobalCols() const 
Returns the number of global matrix columns. 
int * All_Indices() const 
virtual long long NumGlobalCols64() const =0
bool IndicesAreGlobal() const 
If matrix indices has not been transformed to local, this query returns true, otherwise it returns fa...
virtual long long NumGlobalNonzeros64() const =0
bool matrixFillCompleteCalled_
int SetAllocated(bool Flag)
const Epetra_Map & RowMatrixColMap() const 
Returns the Epetra_Map object associated with columns of this matrix. 
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. 
const Epetra_Map & OperatorRangeMap() const 
Returns the Epetra_Map object associated with the range of this matrix operator. 
int SetUseTranspose(bool UseTranspose_in)
If set true, transpose of this operator will be applied. 
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 SortGhostsAssociatedWithEachProcessor(bool Flag)
Forces FillComplete() to locally order ghostnodes associated with each remote processor in ascending ...
bool Filled() const 
If FillComplete() has been called, this query returns true, otherwise it returns false. 
Epetra_CrsMatrix: A class for constructing and using real-valued double-precision sparse compressed r...
const Epetra_Map & DomainMap() const 
Returns the Epetra_Map object associated with the domain of this matrix operator. ...
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. 
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...
virtual int ReportError(const std::string Message, int ErrorCode) const 
Error reporting method. 
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 NumAllocatedMyEntries(int Row) const 
Returns the allocated number of nonzero entries in specified local row on this processor. 
const Epetra_CrsGraph & Graph() const 
Returns a reference to the Epetra_CrsGraph object associated with this matrix. 
Epetra_SrcDistObject: A class for supporting flexible source distributed objects for import/export op...
Epetra_RowMatrix: A pure virtual class for using real-valued double-precision row matrices...
const Epetra_BlockMap & Map() const 
Map() method inherited from Epetra_DistObject. 
const Epetra_Comm & Comm() const 
Returns a pointer to the Epetra_Comm communicator associated with this matrix. 
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_
long long GCID64(int LCID_in) const 
double *& ExpertExtractValues()
Returns a reference to the double* used to hold the values array. 
virtual long long NumGlobalRows64() const =0
Epetra_CrsGraph: A class for constructing and using sparse compressed row graphs. ...
Epetra_DistObject: A class for constructing and using dense multi-vectors, vectors and matrices in pa...
int ExtractCrsDataPointers(int *&IndexOffset, int *&Indices, double *&Values_in) const 
Returns internal data pointers associated with Crs matrix format. 
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(). 
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...
long long NumGlobalDiagonals64() const 
const Epetra_BlockMap & Map() const 
Returns the address of the Epetra_BlockMap for this multi-vector. 
int NumMyNonzeros() const 
Returns the number of nonzero entries in the calling processor's portion of the matrix.