00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _Isorropia_EpetraProber_hpp_
00031 #define _Isorropia_EpetraProber_hpp_
00032
00033 #include <Isorropia_ConfigDefs.hpp>
00034 #include <Teuchos_ParameterList.hpp>
00035
00036 #include <Isorropia_Colorer.hpp>
00037 #include <Isorropia_EpetraColorer.hpp>
00038
00039 #ifdef HAVE_EPETRA
00040 #include <Epetra_CrsGraph.h>
00041 #include <Teuchos_RCP.hpp>
00042 class Epetra_MultiVector;
00043 class Epetra_CrsMatrix;
00044 class Epetra_Operator;
00045
00046 namespace Isorropia {
00047
00048 namespace Epetra {
00049
00056 class Prober {
00057 public:
00058
00066 Prober(Teuchos::RCP<const Epetra_CrsGraph> input_graph,
00067 const Teuchos::ParameterList& paramlist,
00068 bool compute_now=true);
00069
00077 Prober(Teuchos::RCP<const Epetra_CrsMatrix> input_matrix,
00078 const Teuchos::ParameterList & paramlist,
00079 bool compute_now=true);
00080
00081
00082
00086 Prober();
00087
00088
00090 ~Prober(){delete colorer_;}
00091
00092
00094 void setList(const Teuchos::ParameterList& paramlist);
00095
00097 void setGraph(Teuchos::RCP<const Epetra_CrsGraph> input_graph){input_graph_=input_graph; has_colored=false;}
00098
00101 void color();
00102
00108 int probe(const Epetra_Operator & op, Epetra_CrsMatrix & out_matrix);
00109
00114 Teuchos::RCP<Epetra_CrsMatrix> probe(const Epetra_Operator & op);
00115
00116 private:
00117 Teuchos::RCP<const Epetra_CrsGraph> input_graph_;
00118 Colorer *colorer_;
00119 Teuchos::ParameterList List_;
00120 bool has_colored;
00121 };
00122
00123 }
00124 }
00125
00126 #endif //HAVE_EPETRA
00127
00128 #endif
00129