Epetra_CrsGraphData.h

Go to the documentation of this file.
00001 
00002 //@HEADER
00003 /*
00004 ************************************************************************
00005 
00006               Epetra: Linear Algebra Services Package 
00007                 Copyright (2001) Sandia Corporation
00008 
00009 Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00010 license for use of this work by or on behalf of the U.S. Government.
00011 
00012 This library is free software; you can redistribute it and/or modify
00013 it under the terms of the GNU Lesser General Public License as
00014 published by the Free Software Foundation; either version 2.1 of the
00015 License, or (at your option) any later version.
00016  
00017 This library is distributed in the hope that it will be useful, but
00018 WITHOUT ANY WARRANTY; without even the implied warranty of
00019 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00020 Lesser General Public License for more details.
00021  
00022 You should have received a copy of the GNU Lesser General Public
00023 License along with this library; if not, write to the Free Software
00024 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00025 USA
00026 Questions? Contact Michael A. Heroux (maherou@sandia.gov) 
00027 
00028 ************************************************************************
00029 */
00030 //@HEADER
00031 
00032 #ifndef EPETRA_CRSGRAPHDATA_H
00033 #define EPETRA_CRSGRAPHDATA_H
00034 
00035 #include "Epetra_Data.h"
00036 #include "Epetra_DataAccess.h"
00037 #include "Epetra_BlockMap.h"
00038 #include "Epetra_IntSerialDenseVector.h"
00039 class Epetra_Import;
00040 class Epetra_Export;
00041 
00043 
00048 class Epetra_CrsGraphData : public Epetra_Data {
00049   friend class Epetra_CrsGraph;
00050 
00051  private:
00052 
00054 
00055 
00057   Epetra_CrsGraphData(Epetra_DataAccess CV, const Epetra_BlockMap& RowMap, bool StaticProfile);
00058 
00060   Epetra_CrsGraphData(Epetra_DataAccess CV, const Epetra_BlockMap& RowMap, const Epetra_BlockMap& ColMap, bool StaticProfile);
00061 
00063   Epetra_CrsGraphData(const Epetra_CrsGraphData& CrsGraphData);
00064 
00066   ~Epetra_CrsGraphData();
00067 
00069 
00071 
00077   void Print(ostream& os, int level = 3) const;
00078 
00080   Epetra_CrsGraphData& operator=(const Epetra_CrsGraphData& CrsGraphData);
00081   
00083 
00084   
00086   int MakeImportExport();
00087   
00089   int ReAllocateAndCast(char*& UserPtr, int& Length, const int IntPacketSizeTimesNumTrans);
00090   
00092   
00093   // Defined by CrsGraph::FillComplete and related
00094   Epetra_BlockMap RowMap_;
00095   Epetra_BlockMap ColMap_;
00096   Epetra_BlockMap DomainMap_;
00097   Epetra_BlockMap RangeMap_;
00098   
00099   const Epetra_Import* Importer_;
00100   const Epetra_Export* Exporter_;
00101 
00102   bool HaveColMap_;
00103   bool Filled_;
00104   bool Allocated_;
00105   bool Sorted_;
00106   bool StorageOptimized_;
00107   bool NoRedundancies_;
00108   bool IndicesAreGlobal_;
00109   bool IndicesAreLocal_;
00110   bool IndicesAreContiguous_;
00111   bool LowerTriangular_;
00112   bool UpperTriangular_;
00113   bool NoDiagonal_;
00114   bool GlobalConstantsComputed_;
00115   bool StaticProfile_;
00116   bool SortGhostsAssociatedWithEachProcessor_;
00117 
00118   int IndexBase_;
00119 
00120   int NumGlobalEntries_;
00121   int NumGlobalBlockRows_;
00122   int NumGlobalBlockCols_;
00123   int NumGlobalBlockDiagonals_;
00124   int NumMyEntries_;
00125   int NumMyBlockRows_;
00126   int NumMyBlockCols_;
00127   int NumMyBlockDiagonals_;
00128   
00129   int MaxRowDim_;
00130   int MaxColDim_;
00131   int GlobalMaxRowDim_;
00132   int GlobalMaxColDim_;
00133   int MaxNumNonzeros_;
00134   int GlobalMaxNumNonzeros_;
00135   
00136   int NumGlobalNonzeros_;
00137   int NumGlobalRows_;
00138   int NumGlobalCols_;
00139   int NumGlobalDiagonals_;
00140   int NumMyNonzeros_;
00141   int NumMyRows_;
00142   int NumMyCols_;
00143   int NumMyDiagonals_;
00144 
00145   int MaxNumIndices_;
00146   int GlobalMaxNumIndices_;
00147   
00148   int** Indices_;
00149   Epetra_IntSerialDenseVector NumAllocatedIndicesPerRow_;
00150   Epetra_IntSerialDenseVector NumIndicesPerRow_;
00151   Epetra_IntSerialDenseVector IndexOffset_;
00152   Epetra_IntSerialDenseVector All_Indices_;
00153   Epetra_DataAccess CV_;
00154   
00155 };
00156 
00157 #endif /* EPETRA_CRSGRAPHDATA_H */

Generated on Wed May 12 21:41:05 2010 for Epetra Package Browser (Single Doxygen Collection) by  doxygen 1.4.7