Epetra_FECrsGraph.h

Go to the documentation of this file.
00001 //@HEADER
00002 /*
00003 ************************************************************************
00004 
00005               Epetra: Linear Algebra Services Package 
00006                 Copyright (2001) Sandia Corporation
00007 
00008 Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00009 license for use of this work by or on behalf of the U.S. Government.
00010 
00011 This library is free software; you can redistribute it and/or modify
00012 it under the terms of the GNU Lesser General Public License as
00013 published by the Free Software Foundation; either version 2.1 of the
00014 License, or (at your option) any later version.
00015  
00016 This library is distributed in the hope that it will be useful, but
00017 WITHOUT ANY WARRANTY; without even the implied warranty of
00018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00019 Lesser General Public License for more details.
00020  
00021 You should have received a copy of the GNU Lesser General Public
00022 License along with this library; if not, write to the Free Software
00023 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00024 USA
00025 Questions? Contact Michael A. Heroux (maherou@sandia.gov) 
00026 
00027 ************************************************************************
00028 */
00029 //@HEADER
00030 
00031 #ifndef EPETRA_FECRSGRAPH_H
00032 #define EPETRA_FECRSGRAPH_H
00033 
00034 #include "Epetra_Map.h"
00035 #include "Epetra_CrsGraph.h"
00036 
00049 class Epetra_FECrsGraph : public Epetra_CrsGraph {
00050   public:
00051 
00053   Epetra_FECrsGraph(Epetra_DataAccess CV,
00054         const Epetra_BlockMap& RowMap,
00055         int* NumIndicesPerRow,
00056         bool ignoreNonLocalEntries=false);
00057 
00059   Epetra_FECrsGraph(Epetra_DataAccess CV,
00060         const Epetra_BlockMap& RowMap,
00061         int NumIndicesPerRow,
00062         bool ignoreNonLocalEntries=false);
00063 
00065   Epetra_FECrsGraph(Epetra_DataAccess CV,
00066         const Epetra_BlockMap& RowMap, 
00067         const Epetra_BlockMap& ColMap,
00068         int* NumIndicesPerRow,
00069         bool ignoreNonLocalEntries=false);
00070 
00072   Epetra_FECrsGraph(Epetra_DataAccess CV,
00073         const Epetra_BlockMap& RowMap, 
00074         const Epetra_BlockMap& ColMap,
00075         int NumIndicesPerRow,
00076         bool ignoreNonLocalEntries=false);
00077 
00079   Epetra_FECrsGraph(const Epetra_FECrsGraph& Graph);
00080 
00082   virtual ~Epetra_FECrsGraph();
00083 
00084   //Let the compiler know we intend to overload the base-class function
00085   //InsertGlobalIndices rather than hide it.
00086   using Epetra_CrsGraph::InsertGlobalIndices;
00087 
00097   int InsertGlobalIndices(int numRows, const int* rows,
00098         int numCols, const int* cols);
00099 
00121   int GlobalAssemble(bool callFillComplete=true);
00122 
00148   int GlobalAssemble(const Epetra_Map& domain_map,
00149                      const Epetra_Map& range_map,
00150                      bool callFillComplete=true);
00151 
00152  private:
00153   void DeleteMemory();
00154   int InsertNonlocalRow(int row, int offset);
00155   int InputNonlocalIndices(int row,
00156          int numCols,
00157          const int* cols);
00158   int InputNonlocalIndex(int rowoffset,
00159        int col);
00160 
00161   int myFirstRow_;
00162   int myNumRows_;
00163   bool ignoreNonLocalEntries_;
00164 
00165   int numNonlocalRows_;
00166   int* nonlocalRows_;
00167   int* nonlocalRowLengths_;
00168   int* nonlocalRowAllocLengths_;
00169   int** nonlocalCols_;
00170 
00171   Epetra_FECrsGraph & operator=(const Epetra_FECrsGraph& Graph);
00172 
00173 
00174 };//class Epetra_FECrsGraph
00175 
00176 #endif

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