|
IFPACK Development
|
00001 /*@HEADER 00002 // *********************************************************************** 00003 // 00004 // Ifpack: Object-Oriented Algebraic Preconditioner Package 00005 // Copyright (2002) Sandia Corporation 00006 // 00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00008 // license for use of this work by or on behalf of the U.S. Government. 00009 // 00010 // This library is free software; you can redistribute it and/or modify 00011 // it under the terms of the GNU Lesser General Public License as 00012 // published by the Free Software Foundation; either version 2.1 of the 00013 // License, or (at your option) any later version. 00014 // 00015 // This library is distributed in the hope that it will be useful, but 00016 // WITHOUT ANY WARRANTY; without even the implied warranty of 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 // Lesser General Public License for more details. 00019 // 00020 // You should have received a copy of the GNU Lesser General Public 00021 // License along with this library; if not, write to the Free Software 00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00023 // USA 00024 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 00025 // 00026 // *********************************************************************** 00027 //@HEADER 00028 */ 00029 00030 #ifndef IFPACK_GRAPH_EPETRA_ROWMATRIX_H 00031 #define IFPACK_GRAPH_EPETRA_ROWMATRIX_H 00032 00033 #include "Ifpack_ConfigDefs.h" 00034 #include "Ifpack_Graph.h" 00035 #include "Teuchos_RefCountPtr.hpp" 00036 00037 class Epetra_Comm; 00038 class Epetra_RowMatrix; 00039 00041 00051 class Ifpack_Graph_Epetra_RowMatrix : public Ifpack_Graph { 00052 00053 public: 00054 00056 Ifpack_Graph_Epetra_RowMatrix(const Teuchos::RefCountPtr<const Epetra_RowMatrix>& RowMatrix); 00057 00059 virtual ~Ifpack_Graph_Epetra_RowMatrix() {}; 00060 00062 int NumMyRows() const 00063 { 00064 return(NumMyRows_); 00065 } 00066 00068 int NumMyCols() const 00069 { 00070 return(NumMyCols_); 00071 } 00072 00074 int NumGlobalRows() const 00075 { 00076 return(NumGlobalRows_); 00077 } 00078 00080 int NumGlobalCols() const 00081 { 00082 return(NumGlobalCols_); 00083 } 00084 00086 int MaxMyNumEntries() const 00087 { 00088 return(MaxNumIndices_); 00089 } 00090 00092 int NumMyNonzeros() const; 00093 00095 bool Filled() const; 00096 00098 int GRID(int) const; 00099 00101 int GCID(int) const; 00102 00104 int LRID(int) const; 00105 00107 int LCID(int) const; 00108 00110 int ExtractMyRowCopy(int GlobalRow, int LenOfIndices, 00111 int &NumIndices, int *Indices) const; 00112 00114 const Epetra_Comm& Comm() const; 00115 00117 ostream& Print(std::ostream& os) const; 00118 00119 private: 00120 00122 int NumMyRows_; 00124 int NumMyCols_; 00126 int NumGlobalRows_; 00128 int NumGlobalCols_; 00130 int MaxNumIndices_; 00132 Teuchos::RefCountPtr<const Epetra_RowMatrix> RowMatrix_; 00134 mutable std::vector<double> Values_; 00135 }; 00136 00137 #endif
1.7.4