Ifpack Package Browser (Single Doxygen Collection)  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Ifpack_Graph_Epetra_RowMatrix.h
Go to the documentation of this file.
1 /*@HEADER
2 // ***********************************************************************
3 //
4 // Ifpack: Object-Oriented Algebraic Preconditioner Package
5 // Copyright (2002) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38 //
39 // ***********************************************************************
40 //@HEADER
41 */
42 
43 #ifndef IFPACK_GRAPH_EPETRA_ROWMATRIX_H
44 #define IFPACK_GRAPH_EPETRA_ROWMATRIX_H
45 
46 #include "Ifpack_ConfigDefs.h"
47 #include "Ifpack_Graph.h"
48 #include "Epetra_RowMatrix.h"
49 #include "Epetra_Map.h"
50 #include "Teuchos_RefCountPtr.hpp"
51 
52 class Epetra_Comm;
53 class Epetra_RowMatrix;
54 
56 
67 
68 public:
69 
71  Ifpack_Graph_Epetra_RowMatrix(const Teuchos::RefCountPtr<const Epetra_RowMatrix>& RowMatrix);
72 
75 
77  int NumMyRows() const
78  {
79  return(NumMyRows_);
80  }
81 
83  int NumMyCols() const
84  {
85  return(NumMyCols_);
86  }
87 
88 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
89  int NumGlobalRows() const
91  {
92  if(RowMatrix_->RowMatrixRowMap().GlobalIndicesInt())
93  return (int) (NumGlobalRows_);
94  else
95  throw "Ifpack_Graph_Epetra_RowMatrix::NumGlobalRows: GlobalIndices not int.";
96  }
97 #endif
98  long long NumGlobalRows64() const
99  {
100  return(NumGlobalRows_);
101  }
102 
103 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
104  int NumGlobalCols() const
106  {
107  if(RowMatrix_->RowMatrixColMap().GlobalIndicesInt())
108  return (int) (NumGlobalCols_);
109  else
110  throw "Ifpack_Graph_Epetra_RowMatrix::NumGlobalCols: GlobalIndices not int.";
111  }
112 #endif
113  long long NumGlobalCols64() const
114  {
115  return(NumGlobalCols_);
116  }
117 
119  int MaxMyNumEntries() const
120  {
121  return(MaxNumIndices_);
122  }
123 
125  int NumMyNonzeros() const;
126 
128  bool Filled() const;
129 
130 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
131  int GRID(int) const;
133 #endif
134  long long GRID64(int) const;
135 
136 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
137  int GCID(int) const;
139 #endif
140  long long GCID64(int) const;
141 
142 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
143  int LRID(int) const;
145 
147  int LCID(int) const;
148 #endif
149 
150 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
151  int LRID(long long) const;
153 
155  int LCID(long long) const;
156 #endif
157 
159  int ExtractMyRowCopy(int GlobalRow, int LenOfIndices,
160  int &NumIndices, int *Indices) const;
161 
163  const Epetra_Comm& Comm() const;
164 
166  std::ostream& Print(std::ostream& os) const;
167 
168 private:
169 
175  long long NumGlobalRows_;
177  long long NumGlobalCols_;
181  Teuchos::RefCountPtr<const Epetra_RowMatrix> RowMatrix_;
183  mutable std::vector<double> Values_;
184 };
185 
186 #endif
int ExtractMyRowCopy(int GlobalRow, int LenOfIndices, int &NumIndices, int *Indices) const
Extracts a copy of input local row.
int NumMyRows() const
Returns the number of local rows.
int MaxMyNumEntries() const
Returns the maximun number of entries for row.
std::vector< double > Values_
Vectors that can be used in calls to ExtractMyRowView of the Row matrix.
virtual ~Ifpack_Graph_Epetra_RowMatrix()
Destructor.
int NumMyNonzeros() const
Returns the number of local nonzero entries.
int MaxNumIndices_
Maximum number of indices per row.
int NumMyCols_
Number of local columns.
int GRID(int) const
Returns the global row ID of input local row.
long long NumGlobalRows_
Number of global rows.
long long GCID64(int) const
Returns the global column ID of input local column.
const Epetra_Comm & Comm() const
Returns the communicator object of the graph.
Ifpack_Graph_Epetra_RowMatrix: a class to define Ifpack_Graph as a light-weight conversion of Epetra_...
int NumGlobalCols() const
Returns the number of global columns.
std::ostream & Print(std::ostream &os) const
Prints basic information abobut the graph object.
long long NumGlobalCols_
Number of global columns.
int NumMyCols() const
Returns the number of local columns.
int GCID(int) const
Returns the global column ID of input local column.
bool Filled() const
Returns true is graph is filled.
Ifpack_Graph: a pure virtual class that defines graphs for IFPACK.
Definition: Ifpack_Graph.h:61
int LCID(int) const
Returns the local column ID of input global column.
Teuchos::RefCountPtr< const Epetra_RowMatrix > RowMatrix_
Pointer to the wrapped Epetra_CrsGraph.
int NumGlobalRows() const
Returns the number of global rows.
int LRID(int) const
Returns the local row ID of input global row.
Ifpack_Graph_Epetra_RowMatrix(const Teuchos::RefCountPtr< const Epetra_RowMatrix > &RowMatrix)
Constructor.