fei_Graph.hpp

00001 /*--------------------------------------------------------------------*/
00002 /*    Copyright 2005 Sandia Corporation.                              */
00003 /*    Under the terms of Contract DE-AC04-94AL85000, there is a       */
00004 /*    non-exclusive license for use of this work by or on behalf      */
00005 /*    of the U.S. Government.  Export of this program may require     */
00006 /*    a license from the United States Government.                    */
00007 /*--------------------------------------------------------------------*/
00008 
00009 #ifndef _fei_Graph_hpp_
00010 #define _fei_Graph_hpp_
00011 
00012 #include <fei_iosfwd.hpp>
00013 #include <snl_fei_RaggedTable_specialize.hpp>
00014 
00015 #include <map>
00016 
00017 namespace fei {
00018 
00020   class Graph {
00021   public:
00022 
00024     virtual ~Graph(){}
00025 
00027     typedef snl_fei::RaggedTable<snl_fei::MapContig<fei::ctg_set<int>*>,fei::ctg_set<int> >
00028       table_type;
00029 
00031     typedef fei::ctg_set<int> table_row_type;
00032 
00034     typedef snl_fei::RaggedTable<std::map<int,fei::ctg_set<int>*>,fei::ctg_set<int> > 
00035       remote_table_type;
00036 
00038     virtual int addIndices(int row,
00039        int len,
00040        const int* indices) = 0;
00041 
00045     virtual int addSymmetricIndices(int numIndices,
00046           int* indices,
00047           bool diagonal=false) = 0;
00048 
00050     virtual int gatherFromOverlap() = 0;
00051 
00054     virtual table_type* getLocalGraph() = 0;
00055 
00057     virtual std::vector<remote_table_type*>& getRemoteGraph() = 0;
00058 
00060     virtual int writeLocalGraph(FEI_OSTREAM& os,
00061       bool debug=false,
00062       bool prefixLinesWithPoundSign=true) = 0;
00063 
00065     virtual int writeRemoteGraph(FEI_OSTREAM& os) = 0;
00066 
00067   };//class Graph
00068 
00069 } //namespace fei
00070 
00071 #endif // _fei_Graph_hpp_
00072 

Generated on Wed May 12 21:30:41 2010 for FEI by  doxygen 1.4.7