IFPACK  Development
Ifpack_Graph_Epetra_CrsGraph.cpp
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 #include "Ifpack_ConfigDefs.h"
44 #include "Ifpack_Graph.h"
45 #include "Ifpack_Graph_Epetra_CrsGraph.h"
46 #include "Epetra_Comm.h"
47 #include "Epetra_CrsGraph.h"
48 
49 //==============================================================================
51 Ifpack_Graph_Epetra_CrsGraph(const Teuchos::RefCountPtr<const Epetra_CrsGraph>& CrsGraph) :
52 CrsGraph_(CrsGraph)
53 {
54  NumMyRows_ = CrsGraph_->NumMyRows();
55  NumMyCols_ = CrsGraph_->NumMyCols();
56  NumGlobalRows_ = CrsGraph_->NumGlobalRows64();
57  NumGlobalCols_ = CrsGraph_->NumGlobalCols64();
58  MaxNumIndices_ = CrsGraph_->MaxNumIndices();
59 }
60 
61 //==============================================================================
63 {
64  return(CrsGraph_->Comm());
65 }
66 
67 //==============================================================================
69 {
70  return(CrsGraph_->Filled());
71 }
72 
73 //==============================================================================
74 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
75 int Ifpack_Graph_Epetra_CrsGraph::GRID(int LRID_in) const
76 {
77  return(CrsGraph_->GRID(LRID_in));
78 }
79 
80 //==============================================================================
81 int Ifpack_Graph_Epetra_CrsGraph::GCID(int LCID_in) const
82 {
83  return(CrsGraph_->GCID(LCID_in));
84 }
85 #endif
86 
87 long long Ifpack_Graph_Epetra_CrsGraph::GRID64(int LRID_in) const
88 {
89  return(CrsGraph_->GRID64(LRID_in));
90 }
91 
92 //==============================================================================
93 long long Ifpack_Graph_Epetra_CrsGraph::GCID64(int LCID_in) const
94 {
95  return(CrsGraph_->GCID64(LCID_in));
96 }
97 
98 //==============================================================================
99 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
101 {
102  return(CrsGraph_->LRID(GRID_in));
103 }
104 
105 //==============================================================================
107 {
108  return(CrsGraph_->LCID(GCID_in));
109 }
110 #endif
111 
112 //==============================================================================
113 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
114 int Ifpack_Graph_Epetra_CrsGraph::LRID(long long GRID_in) const
115 {
116  return(CrsGraph_->LRID(GRID_in));
117 }
118 
119 //==============================================================================
120 int Ifpack_Graph_Epetra_CrsGraph::LCID(long long GCID_in) const
121 {
122  return(CrsGraph_->LCID(GCID_in));
123 }
124 #endif
125 //==============================================================================
127 ExtractMyRowCopy(int MyRow, int LenOfIndices,
128  int &NumIndices, int *Indices) const
129 {
130  return(CrsGraph_->ExtractMyRowCopy(MyRow, LenOfIndices,
131  NumIndices, Indices));
132 }
133 
134 //==============================================================================
136 {
137  return(CrsGraph_->NumMyEntries());
138 }
139 
140 // ======================================================================
141 std::ostream& Ifpack_Graph_Epetra_CrsGraph::Print(std::ostream& os) const
142 {
143  using std::endl;
144 
145  if (Comm().MyPID())
146  return(os);
147 
148  os << "================================================================================" << endl;
149  os << "Ifpack_Graph_Epetra_CrsGraph" << endl;
150  os << "Number of local rows = " << NumMyRows_ << endl;
151  os << "Number of global rows = " << NumGlobalRows_ << endl;
152  os << "================================================================================" << endl;
153 
154  return(os);
155 
156 }
Ifpack_Graph_Epetra_CrsGraph::LRID
int LRID(int) const
Returns the local row ID of input global row.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:100
Ifpack_Graph_Epetra_CrsGraph::GRID
int GRID(int) const
Returns the global row ID of input local row.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:75
Ifpack_Graph_Epetra_CrsGraph::Print
virtual std::ostream & Print(std::ostream &os) const
Prints basic information about the graph object.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:141
Ifpack_Graph_Epetra_CrsGraph::ExtractMyRowCopy
int ExtractMyRowCopy(int GlobalRow, int LenOfIndices, int &NumIndices, int *Indices) const
Extracts a copy of input local row.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:127
Ifpack_Graph_Epetra_CrsGraph::NumMyNonzeros
int NumMyNonzeros() const
Returns the number of local nonzero entries.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:135
Epetra_Comm
Ifpack_Graph_Epetra_CrsGraph::GCID
int GCID(int) const
Returns the global column ID of input local column.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:81
Ifpack_Graph_Epetra_CrsGraph::GCID64
long long GCID64(int) const
Returns the global column ID of input local column.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:93
Ifpack_Graph_Epetra_CrsGraph::Ifpack_Graph_Epetra_CrsGraph
Ifpack_Graph_Epetra_CrsGraph(const Teuchos::RefCountPtr< const Epetra_CrsGraph > &CrsGraph)
Constructor.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:51
Ifpack_Graph_Epetra_CrsGraph::Filled
bool Filled() const
Returns true is graph is filled.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:68
Ifpack_Graph_Epetra_CrsGraph::LCID
int LCID(int) const
Returns the local column ID of input global column.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:106
Ifpack_Graph_Epetra_CrsGraph::Comm
const Epetra_Comm & Comm() const
Returns the communicator object of the graph.
Definition: Ifpack_Graph_Epetra_CrsGraph.cpp:62