Files
mlpack/fastlib/branches/fastlib-old/trilinos/include/Epetra_CrsGraphData.h
T
Ryan Curtin f6864dd435 Move fastlib-old (originally 'fastlib') to fastlib/branches/fastlib-old where it
will sit until the end of time and nobody will touch it because it's old
2010-01-31 22:31:55 +00:00

157 lines
4.6 KiB
C++

//@HEADER
/*
************************************************************************
Epetra: Linear Algebra Services Package
Copyright (2001) Sandia Corporation
Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
license for use of this work by or on behalf of the U.S. Government.
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
USA
Questions? Contact Michael A. Heroux (maherou@sandia.gov)
************************************************************************
*/
//@HEADER
#ifndef EPETRA_CRSGRAPHDATA_H
#define EPETRA_CRSGRAPHDATA_H
#include "Epetra_Data.h"
#include "Epetra_DataAccess.h"
#include "Epetra_BlockMap.h"
#include "Epetra_IntSerialDenseVector.h"
class Epetra_Import;
class Epetra_Export;
//! Epetra_CrsGraphData: The Epetra CrsGraph Data Class.
/*! The Epetra_CrsGraphData class is an implementation detail of Epetra_CrsGraph.
It is reference-counted, and can be shared by multiple Epetra_CrsGraph instances.
It derives from Epetra_Data, and inherits reference-counting from it.
*/
class Epetra_CrsGraphData : public Epetra_Data {
friend class Epetra_CrsGraph;
private:
//! @name Constructor/Destructor Methods
//@{
//! Epetra_CrsGraphData Default Constructor.
Epetra_CrsGraphData(Epetra_DataAccess CV, const Epetra_BlockMap& RowMap, bool StaticProfile);
//! Epetra_CrsGraphData Constructor (user provided ColMap).
Epetra_CrsGraphData(Epetra_DataAccess CV, const Epetra_BlockMap& RowMap, const Epetra_BlockMap& ColMap, bool StaticProfile);
//! Epetra_CrsGraphData copy constructor (not defined).
Epetra_CrsGraphData(const Epetra_CrsGraphData& CrsGraphData);
//! Epetra_CrsGraphData Destructor.
~Epetra_CrsGraphData();
//@}
//! Outputs state of almost all data members. (primarily used for testing purposes).
/*! Output level: Uses same scheme as chmod. 4-bit = BlockMaps, 2-bit = Indices, 1-bit = Everything else.
Default paramenter sets it to 3, which is everything but the BlockMaps. Commonly used options:
1 = Everything except the BlockMaps & Indices_
2 = Just Indices_
3 = Everything except the BlockMaps
*/
void Print(ostream& os, int level = 3) const;
//! Epetra_CrsGraphData assignment operator (not defined)
Epetra_CrsGraphData& operator=(const Epetra_CrsGraphData& CrsGraphData);
//! @name Helper methods called in CrsGraph. Mainly memory allocations and deallocations.
//@{
//! called by FillComplete (and TransformToLocal)
int MakeImportExport();
//! called by PackAndPrepare
int ReAllocateAndCast(char*& UserPtr, int& Length, const int IntPacketSizeTimesNumTrans);
//@}
// Defined by CrsGraph::FillComplete and related
Epetra_BlockMap RowMap_;
Epetra_BlockMap ColMap_;
Epetra_BlockMap DomainMap_;
Epetra_BlockMap RangeMap_;
const Epetra_Import* Importer_;
const Epetra_Export* Exporter_;
bool HaveColMap_;
bool Filled_;
bool Allocated_;
bool Sorted_;
bool StorageOptimized_;
bool NoRedundancies_;
bool IndicesAreGlobal_;
bool IndicesAreLocal_;
bool IndicesAreContiguous_;
bool LowerTriangular_;
bool UpperTriangular_;
bool NoDiagonal_;
bool GlobalConstantsComputed_;
bool StaticProfile_;
int IndexBase_;
int NumGlobalEntries_;
int NumGlobalBlockRows_;
int NumGlobalBlockCols_;
int NumGlobalBlockDiagonals_;
int NumMyEntries_;
int NumMyBlockRows_;
int NumMyBlockCols_;
int NumMyBlockDiagonals_;
int MaxRowDim_;
int MaxColDim_;
int GlobalMaxRowDim_;
int GlobalMaxColDim_;
int MaxNumNonzeros_;
int GlobalMaxNumNonzeros_;
int NumGlobalNonzeros_;
int NumGlobalRows_;
int NumGlobalCols_;
int NumGlobalDiagonals_;
int NumMyNonzeros_;
int NumMyRows_;
int NumMyCols_;
int NumMyDiagonals_;
int MaxNumIndices_;
int GlobalMaxNumIndices_;
int** Indices_;
Epetra_IntSerialDenseVector NumAllocatedIndicesPerRow_;
Epetra_IntSerialDenseVector NumIndicesPerRow_;
Epetra_IntSerialDenseVector IndexOffset_;
Epetra_IntSerialDenseVector All_Indices_;
Epetra_DataAccess CV_;
};
#endif /* EPETRA_CRSGRAPHDATA_H */