IFPACK Development
Ifpack_Graph_Epetra_CrsGraph.cpp
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 // Redistribution and use in source and binary forms, with or without
00011 // modification, are permitted provided that the following conditions are
00012 // met:
00013 //
00014 // 1. Redistributions of source code must retain the above copyright
00015 // notice, this list of conditions and the following disclaimer.
00016 //
00017 // 2. Redistributions in binary form must reproduce the above copyright
00018 // notice, this list of conditions and the following disclaimer in the
00019 // documentation and/or other materials provided with the distribution.
00020 //
00021 // 3. Neither the name of the Corporation nor the names of the
00022 // contributors may be used to endorse or promote products derived from
00023 // this software without specific prior written permission.
00024 //
00025 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
00026 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00027 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00028 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
00029 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00030 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00031 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
00032 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00033 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
00034 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00035 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00036 //
00037 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
00038 //
00039 // ***********************************************************************
00040 //@HEADER
00041 */
00042 
00043 #include "Ifpack_ConfigDefs.h"
00044 #include "Ifpack_Graph.h"
00045 #include "Ifpack_Graph_Epetra_CrsGraph.h"
00046 #include "Epetra_Comm.h"
00047 #include "Epetra_CrsGraph.h"
00048 
00049 //==============================================================================
00050 Ifpack_Graph_Epetra_CrsGraph::
00051 Ifpack_Graph_Epetra_CrsGraph(const Teuchos::RefCountPtr<const Epetra_CrsGraph>& CrsGraph) :
00052 CrsGraph_(CrsGraph)
00053 {
00054   NumMyRows_ = CrsGraph_->NumMyRows();
00055   NumMyCols_ = CrsGraph_->NumMyCols();
00056   NumGlobalRows_ = CrsGraph_->NumGlobalRows64();
00057   NumGlobalCols_ = CrsGraph_->NumGlobalCols64();
00058   MaxNumIndices_ = CrsGraph_->MaxNumIndices();
00059 }
00060 
00061 //==============================================================================
00062 const Epetra_Comm& Ifpack_Graph_Epetra_CrsGraph::Comm() const
00063 {
00064   return(CrsGraph_->Comm());
00065 }
00066 
00067 //==============================================================================
00068 bool Ifpack_Graph_Epetra_CrsGraph::Filled() const
00069 {
00070   return(CrsGraph_->Filled());
00071 }
00072  
00073 //==============================================================================
00074 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
00075 int Ifpack_Graph_Epetra_CrsGraph::GRID(int LRID_in) const
00076 {
00077   return(CrsGraph_->GRID(LRID_in));
00078 }
00079 
00080 //==============================================================================
00081 int Ifpack_Graph_Epetra_CrsGraph::GCID(int LCID_in) const
00082 {
00083   return(CrsGraph_->GCID(LCID_in));
00084 }
00085 #endif
00086 
00087 long long Ifpack_Graph_Epetra_CrsGraph::GRID64(int LRID_in) const
00088 {
00089   return(CrsGraph_->GRID64(LRID_in));
00090 }
00091 
00092 //==============================================================================
00093 long long Ifpack_Graph_Epetra_CrsGraph::GCID64(int LCID_in) const
00094 {
00095   return(CrsGraph_->GCID64(LCID_in));
00096 }
00097 
00098 //==============================================================================
00099 #ifndef EPETRA_NO_32BIT_GLOBAL_INDICES
00100 int Ifpack_Graph_Epetra_CrsGraph::LRID(int GRID_in) const
00101 {
00102   return(CrsGraph_->LRID(GRID_in));
00103 }
00104 
00105 //==============================================================================
00106 int Ifpack_Graph_Epetra_CrsGraph::LCID(int GCID_in) const
00107 {
00108   return(CrsGraph_->LCID(GCID_in));
00109 }
00110 #endif
00111 
00112 //==============================================================================
00113 #ifndef EPETRA_NO_64BIT_GLOBAL_INDICES
00114 int Ifpack_Graph_Epetra_CrsGraph::LRID(long long GRID_in) const
00115 {
00116   return(CrsGraph_->LRID(GRID_in));
00117 }
00118 
00119 //==============================================================================
00120 int Ifpack_Graph_Epetra_CrsGraph::LCID(long long GCID_in) const
00121 {
00122   return(CrsGraph_->LCID(GCID_in));
00123 }
00124 #endif
00125 //==============================================================================
00126 int Ifpack_Graph_Epetra_CrsGraph::
00127 ExtractMyRowCopy(int MyRow, int LenOfIndices, 
00128          int &NumIndices, int *Indices) const
00129 {
00130   return(CrsGraph_->ExtractMyRowCopy(MyRow, LenOfIndices,
00131                      NumIndices, Indices));
00132 }
00133 
00134 //==============================================================================
00135 int Ifpack_Graph_Epetra_CrsGraph::NumMyNonzeros() const
00136 {
00137   return(CrsGraph_->NumMyEntries());
00138 }
00139 
00140 // ======================================================================
00141 ostream& Ifpack_Graph_Epetra_CrsGraph::Print(std::ostream& os) const
00142 {
00143 
00144   if (Comm().MyPID())
00145     return(os);
00146 
00147   os << "================================================================================" << endl;
00148   os << "Ifpack_Graph_Epetra_CrsGraph" << endl;
00149   os << "Number of local rows  = " << NumMyRows_ << endl;
00150   os << "Number of global rows = " << NumGlobalRows_ << endl;
00151   os << "================================================================================" << endl;
00152 
00153   return(os);
00154 
00155 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends